C语言:x,y,z,t均为int型变量,x=y=z=0; if(x=y) t=z; else t=!z;执行后为什么t的值为1?

我认为x,y,z都等于0,if语句成立所以执行把z赋值给t,t等于z就等于0,可为什么答案是t等于1?求解释。

  • C语言不能进行连等,也不能进行连续赋值
    x=y=z=0应该改写成int x=0,y=0,z=0;
  • C语言中的=代表赋值,==才表示判断两数是否相等
  • 最后的t=!z,z的值为0,!是逻辑反操作符,0为假,1为真,!z之后就变成了1

如果对你有帮助,还请点个采纳,万分感谢!

注意if里面是x=y,不是x==y,前者是赋值语句,后者才是判断语句,赋值语句的值就是左值,所以if的判断条件是个假值,所以,应该采用else分支,然后t=!z,就等于1了

if(x=y)x=y是赋值表达式,其结果是0,不是x==y