1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > *p++ *++p ++*p (*p)++

*p++ *++p ++*p (*p)++

时间:2020-08-25 03:09:35

相关推荐

*p++ *++p ++*p (*p)++

整理c语言指针的时候发现几个很有意思的东西,直接先上代码在解释。

背景条件

GCC 版本7.4.0

i++:先使用i,再递增

++i:先递增,再使用i

优先级表:

同一优先级的运算符,运算次序由结合方向所决定。

*p++

#include <stdlib.h>int buf[]={1,3,5};int main(){int *p = buf;printf("%d\r\n",*p++);printf("%d",*p);return(0);}

结果:

解析

根据优先级表看出*和++在同一优先级。然后看方向,从右向左。所以p++,然后*。

再看i++的性质,先使用i,再递增。第一遍打印的时候先打印的*p是buf[0]=1,打印结束后,再执行*(p++),此时p指向buf[1]。所以第二次打印出的是3.

*++p

#include <stdlib.h>int buf[]={1,3,5};int main(){int *p = buf;printf("%d\r\n",*++p);printf("%d",*p);return(0);}

结果:

解析

这个很简单 前面和上一题一样。先++p然后*.

++p是先运算再执行。所以两个都是指向buf[1]=3

++*p

#include <stdlib.h>int buf[]={1,3,5};int main(){int *p= buf;printf("%d\r\n",++*p);printf("%d",*p);return(0);}

结果:

解析

先*p,然后++,因为*p=1,然后++(*p),是先运算再执行,所以结果都是2。

(*p)++

#include <stdlib.h>int buf[]={1,3,5};int main(){int *p= buf;printf("%d\r\n",(*p)++);printf("%d",*p);return(0);}

结果:

解析

先小括号里的*p=1,然后再++。

第一次打印因为先执行在递增,所以结果是1

第二次打印因为递增结束了然后是2

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。