
int a=0,b=0,c=0;
c=(a-=a-5),尺宽(a=b,b+3);
printf(“%d,%d,%d\n”,a,b,c);
按程序运行来讲吧。
第一句不说了...
第二句为逗号表达式。
c=(a-=a-5)
给c赋值笑衫,把a-=a-5的结果赋给c;
(a-=a-5)=(a=a-(a-5))
把a=0代入得a=5
进而(a-=a-5)的值为5;
c=5;
接下来执行(碰困腔a=b,b+3);
这里面又有逗号表达式。
a=b因b=0;故a=0;
b+3;不对任何变量赋值,相当于空语句;
综上所述:a=0b=0c=5.
论述完毕.....................
当然应该得2了前面不用去管,n初始值为2,执行(m=a>b)&&++n是有说法的,首先a>b的结果是false,m的内容是0,括号中的运算结果是false,而紧跟的是逻辑与,前面已经是false了,那么不管宏贺后面是什么结果都是false,所以后面的内容实际是不运行的,所以n的值升绝铅没有变,仍然是2;
如果改为(m=a<b)&&++n那结果就不一样了,括号内的值为true,逻辑与的结果要吵好看后面的值才能确定,所以后面部分一定要运行,这样n的值就变为3了;逻辑运算结果是true。
这样的,p是个指针,p=&a[3],就是说p指向了数组第四个元素的地址(3的地址)。这时把p看做数组首地址来取元素的时候,比如p[2],那梁耐么就是以p为首地址的第三个元素,橡尘春即(5)。而5呢,在原数组中是第6个元素。所以你在看兄耐解释就懂了。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)