C语言的一个问题.

来源:百度知道 编辑:UC知道 时间:2024/05/01 16:33:19
设有INT X=8,Y,Z;, 则执行"Y=Z=X++,X=Y==Z;"后,变量X的值是多少?

这道题怎么解? 理由是什么? 还有,==的含义是什么啊?

Y=Z=X++,X=Y==Z;

++运算符 优先于=
所以
x++ 运算完x=9
z=x 运算完z=9
y=z 运算完y=9

x=y==z
==运算符是关系运算 优先于=
所以
现运算y==z (z=9,y=9所以z==y返回1)
然后把他们的运算结果付给x
最后 x=1

==是关系运算符 判断符号两边的变量或关系式是否相等
相等返回1 不相等返回0

1)
y=z=x++;
分解:
z=x++;
y=z;
进一步分解:
z=x;
x=x+1;
y=z;
执行后:
z=8,x=9,y=8
2)
x=y==z;
明细化:
x=(y==z); //y==z:是判断y和z是否相等,再把所得的真/假结果赋给x.
在C中布尔形变量也也以转化为整形.真:1;假:0.
因为z=y=8,所以y==z,返回值为真也就是1.
所以x=1,y=8,z=8

答案是x=1,y=8,z=8
首先你要分清x++和++x的区别
其次==是‘等于’的意思,=是‘付值’,X=Y==Z的意思是y和z相等么相等返回值为1否则为0 在把返回值付给x。

设有INT X=8,Y,Z;, 则执行"Y=Z=X++,X=Y==Z;"后,变量X的值是多少?

因为++运算比赋值运算优先级高,所以从右向左运算,得X为9,Z为8,Y为8;然后==是逻辑运算它的优先级也比赋值运算高,所以先判断Y与Z都是8,相等,结果为真,即1,再把1赋级X,最后X的值是1.

x=1.y=z==x++这句执行后,先将x的值赋给y和z,x的值再加上1,后面这句x=y==z,考的是优先级的问题,相等测试运算符==的优先级比赋值运算符=优先级更高,先判断y是否等z,如果等于,y==z的值是1.否则是0,此题中想等,所以把1赋给x.x=1.

x=8 y=9 z=9