C语言: int x,y,z; x=3;y=2;z=0; x+=y+=z printf("%d\n",x<y); 输出的是什么?详细思路!!!!!!

如题所述

一步步解析
int x,y,z; x=3;y=2;z=0; 略过
x+=y+=z由于赋值计算方向是由右向左,故先算y+=z;再算x+=y

故y=2;x=5 printf("%d\n",x<y);输出的就是0追问

那么0是谁的值呢?

追答

(x<y)的值啊

追问

顺便问下:X=Y>Z>=5 计算顺序是怎么样的

追答

X=Y>Z>=5这是优先级的问题,=优先级比>,>=低,所以它和X=(Y>Z>=5)一个意思;一般的你这种连写关系运算符是不对的,编译不过去,这个貌似依赖于编译器,有的会通过;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-26
输出是0,自己把代码在开发环境下测试一下就知道了,思路是:x+=y+=z;
这一句的意思相当于下面两句:y=y+z; x=x+y; //计算y=2,x=5
因为x比y大,所以x<y返回假,即0,输出也就是0。
第2个回答  2012-09-26
+=为双目运算符,自右向左结合方式,故执行x+=y+=z后,z值不变,y=y+z=2,x=x+y=3+2=5,
故x<y为假,即0.
所以输出为0,因为x<y是一个关系表达式,结果只能为0或1
第3个回答  2012-09-26
拆开写,一目了然:
int x, y, z;
x=3;
y=2;
z=0;
y+=z; //y=2
x+=y; //x=5
所以x<y为假,打印结果为0
第4个回答  2012-09-26
0.
分解语句:x+=y+=z即:y += z; x += y.于是z= 0, y= y + z = 2 + 0 = 2, x = x + y = 3 + 2 = 5;
于是有x < y 不成立,逻辑判断句x<y 其值为0.