c语言中取地址解析

来源:互联网 发布:unity3d转场效果 编辑:程序博客网 时间:2024/05/22 13:47

定义: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了。





0 0
原创粉丝点击