228713270 发表于 2014-8-9 18:17:34

为什么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);
}

流行语 发表于 2014-8-9 18:17:35

y=x=a+b,(b+c);首先计算左边的加号,因为赋值优先级大于逗号,然后赋值x,y,再运行(b+c)(没有保存),所以最后是6.

小靚同学Leon 发表于 2014-8-9 18:26:06

逗号的优先级低

火星~Jolin.W 发表于 2014-8-9 18:49:29

先计算左边y=x=a+b
然后计算(b+c)
最后(y=x=a+b,(b+c))的值是b+c

牡丹花下死做鬼 发表于 2014-8-9 22:47:04

这种问题不要转牛角尖
没什么实际意义的

haovcf 发表于 2014-8-9 23:50:11

楼主改成y=x = ( a+b , b+c) ;
就可以了。。
原因就是优先级不一样,
加上( , ) 才是真正的逗号运算符

牡丹花下死做鬼 发表于 2014-8-10 09:41:38

还是劝你一句你要是这么喜欢转这种牛角尖你就死定了

lzkjyang 发表于 2014-8-12 01:05:58

算术运算符要高于,运算符,所以X=6相当于y=6,10所以y=6
页: [1]
查看完整版本: 为什么Y=6,不是表达式后面的B+C=10呢?