关于x = y == z的问题

时间:2010-08-30 12:49:41

标签: c

我有以下代码:

#include <stdio.h>
int main(void)
{
    int x = 2, y = 6, z = 6;
    x = y == z;
    printf("%d", x);
}

输出= 1

为什么?

9 个答案:

答案 0 :(得分:4)

因为赋值是从右到左,并且==的优先级大于=。

是x =(y == z)

y == z为1。

答案 1 :(得分:2)

来自precedence table ==的优先级高于=

因此

x = y == z;

与:

相同
x = (y == z);

由于y == z为真(1),x获得1

答案 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 == 6z == 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。