c语言,请问这个值是多少

来源:百度知道 编辑:UC知道 时间:2024/06/24 18:14:20
main(){
int a=2,b=4,c=10,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
在TC环境下是得到y=6,但是用到逗号运算符,应该是14啊,不知道这是为什么?

逗号表达式的返回值为最后一个表达式的值
表达式1, 表达式2;
则返回的是第二个表达式的值.
下面来谈谈你的例子
a=2,b=4,c=10
y=(x=a+b),(b+c);
这里有一个符号优先级的问题,由于上面的表达式中()是最高优先级,所以先算()内的.于是
y=(x=2+4),(4+10);
其次是算术运算"+"
y=(x=6), 14
再是赋值
最后的情况就是
y=x=6, 14
整个的逗号表达式返回值为14,但是x和y都是6
假如把语句改为
y=((x=a+b),(b+c));
就是强制 (x=a+b),(b+c)为一个逗号表达式,那么他的返回值就是b+c了.最后结果是y=14,x=6

经过本人的运行(TC环境下)得出y=6,x=6
其中y=(x=a+b),(b+c);
这句用到逗号运算符

x = 6;
y = 6;

一看就知道,(b+c) 是多余的。

像”x=0,y=1;“中y的值是不会影响x的值得。

很简单。Y=14,X=6