关于#c语言# 条件语句



```c
#include <stdio.h>

int main()

{
    int x, y = -2, z = 0;
    if ((z = y) < 0) x = 4;
    else if (y == 0) x = 5;
    else x = 6;
    if (z = (y == 0)) x = 5;
    if (x = z = y) x = 3;
    printf("%d %d %d", x, y, z);
    return 0;
}


请问第十四行代码是怎么判断为真的?x不是被赋值成-2吗?

x=z=y是否为真,取决于z,z不为0就是真。
看看是不是想表达x==z&&z==y

参考GPT和自己的思路:第十四行代码是通过条件语句中的比较判断为真的,即判断 y 是否等于 0。因为 y 的初值为 -2,不等于 0,所以会跳过第二个条件语句,并执行第三个条件语句,将 x、y、z 同时赋值为 -2。因此,最终输出的结果为 -2 -2 -2。