发布网友 发布时间:2022-04-19 22:50
共4个回答
热心网友 时间:2023-08-07 21:57
X=0 是因为“运算符”优先级的原因。
分析如下:
int x = 4,y = z = 2;
x = x == (y = z); //这一条语句实际等价于:x = ( x == (y = z) );
在这条语句中,“()” 优先级最高,“==” 优先级次之,“=”优先级最低。
所以计算机是这样执行的:
把z赋值给y,则y = 2;
2. 比较x和y的值是否相等,因为不等,所以执行x == y的结果是:0;
3. 最后把0赋值给x。
所以最后x = 0
热心网友 时间:2023-08-07 21:57
int x = 4 无需解释了;
y=z=2; 等同于 y = (z = 2) ; 等同于:
z=2;
y=z;
执行之后,y=2,z=2
x=x==(y=z) 等同于:
y=z
x=(x==y)
此时x=4,y=2,所以x==y这个判断语句的计算结果是0,也就是假、false;
然后把次结果赋给x,得出最终结果:
x=0
热心网友 时间:2023-08-07 21:57
∵x=4,z=2,∴x==(y=z)为“假”,值为0。∴x=x==(y=z)=0,毕。
热心网友 时间:2023-08-07 21:58
根据运算符优先级可知原式等效于
(x+y)>(!z)
显然子表达式(x+y)的值为5,(!z)的值为0
5>0
那么显然整个表达式的值为真,即1
希望对你能有所帮助。