为什么Y=6,不是表达式后面的B+C=10呢?
#include <stdio.h>void main()
{
int a=2,b=4,c=6,x,y;
y=x=a+b,(b+c);
printf("y=%d,x=%d",y,x);
}
y=x=a+b,(b+c);首先计算左边的加号,因为赋值优先级大于逗号,然后赋值x,y,再运行(b+c)(没有保存),所以最后是6. 逗号的优先级低 先计算左边y=x=a+b
然后计算(b+c)
最后(y=x=a+b,(b+c))的值是b+c 这种问题不要转牛角尖
没什么实际意义的 楼主改成y=x = ( a+b , b+c) ;
就可以了。。
原因就是优先级不一样,
加上( , ) 才是真正的逗号运算符 还是劝你一句你要是这么喜欢转这种牛角尖你就死定了
算术运算符要高于,运算符,所以X=6相当于y=6,10所以y=6
页:
[1]