C语言:分析'1',"1",和1的区别

发布网友 发布时间: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
希望对你能有所帮助。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com