以下程序输出的说明

Rot*_*ngo -1 c

看看节目 -

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

我认为输出是6.我认为z的值是6,z等于y.因此y具有值6.并且y(该值为6)被分配给x.所以我认为答案应该是6.但是在执行时我发现答案是1.任何人都可以解释,为什么1是这个程序的输出?

hac*_*cks 8

x = y == z;是由编译器分析为x = (y == z);,因为的运算符优先级==比的更高=操作者.
y == z检查是否y等于,z并根据比较结果产生一个布尔值(0或者1).因为y = 6 = z,y == z返回1引起的价值x1.因此输出是1.