我有以下代码:
#include <stdio.h>
int main(void)
{
int x = 2, y = 6, z = 6;
x = y == z;
printf("%d", x);
}
输出= 1
为什么?
答案 0 :(得分:4)
因为赋值是从右到左,并且==的优先级大于=。
是x =(y == z)
y == z为1。
答案 1 :(得分:2)
答案 2 :(得分:1)
x = y == z
读为x = (y == z)
,y和z均为6,因此它们相等。 true
为1,因此x为1。
答案 3 :(得分:1)
y == z
评估为true,您将x
... x = true
转换为值为1,因为x
的类型为int
答案 4 :(得分:1)
y == z =&gt; 6 == 6 =&gt;真
True表示为整数(%d)为1.
答案 5 :(得分:0)
x = y == z;
与x = (y == z);
以及y == 6
和z == 6
,(y == z) == 1
相同,x == 1
答案 6 :(得分:0)
首先evals ==运算符,因为y == z为真,x为int,x设为1(true)
答案 7 :(得分:0)
比较(==
)的优先级高于赋值(=
),因此您的中间语句将被处理为x = ( y == z )
;并且真实比较的结果是1,它被分配给x。
答案 8 :(得分:0)
==优先级高于=。所以x = y == z实际上是x =(y == z)。现在y和z都是6.所以比较是真的,结果是1,设置为x。