C语言中一个有关数据输出问题
int a=0,b=0,c=0;
c=(a-=a-5), (a=b,b+3);
printf("%d.%d.%d\n",a,b,c);
结果:a=0,c=5可理解
为什么b=0?
(a=b,b+3)怎么理解,是什么意思,请指教.
谢谢!
参考答案:它是逗号表达式,里面还有一个逗号表达式。
好像逗号表达式的优先级大过赋值表达式(=)。
所以,上面的式子相当于:
(c=(a-=a-5)), (a=b,b+3);
过程是这样的:
先计算a-=a-5,即a = a - (a - 5), a == 5。
然后c = a,此时,c == 5。
接下来计算a = b。因为b == 0,所以 a == 0。
这里,a 被重新赋值两次(共3次,第一次 0,第二次 5,第三次 0),b未被重新赋值。