您的位置:首页 > 编程语言 > C语言/C++

c语言中取地址解析

2016-09-24 16:29 253 查看
定义:int a[2],*p =a;表示a[1]的地址有p+1,a+1,++p



我试了一下a++怎么不行,查了之后说是



参考:http://blog.csdn.net/lyn_bigdream/article/details/8181850

还有逗号运算符的级别是最低的



例子:int a[2],x=2,y=5;

a[0]=(x+3,y++,x++);那么最终结果是:a[0]=2 x=3 y=6;

为何a[0]=2:因为(x++)是运算之后再自加

a[1]=(x++,x+3,x+7);那么最终结果是:a[1]=11 ,x=4

第一反应,我以为a[1]=10,就是3+7;其实是错的。

计算a[0]的时候,x++了一次,此时x=3;计算a[1]的时候,又x++一次,此时x=4,因此a[1]=4+7=11

不信你改成a[1]=(x++,x+7,x+3);调试一下,逗号表达试结果是7,就是4+3,说明经过一个逗号,x已经自加变成4了。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: