a==b==c==0在c语言中怎么运行?

在一个if语句里,我写条件是,abc.三个相等都等于零(格式就是上面题目的格式),然后语法没错误,运算出错。后来我把这个改成了a==0&&b==0&&c==0,然后运行就可以正确计算了。所以机器不能识别多个连等吗?

a==b==c==0是一个关系表达式,由于运算符"=="具有左结合性,故其运算顺序是:
(((a==b) ==c )==0)
若a=5,b=5,c=5,则a==b的值为1,而1==c的结果为0,0==0的值为1(真),所以a==b==c==0就成立了,这就错了,所以单独写开才是准确表达

这里面有2个知识点:

  1. == 关系运算符的连接性为L-R,即左连接,所以 a==b==c==0 的运算顺序为 ((a==b)==c)==0;
  2. 关系运算符的结果为布尔值,在C语言中没有专门的布尔类型,默认用0表示false,用非0(默认是1)表示true;

有了以上2点知识,这个问题就迎刃而解了。
a==b==c==0 --> ((a==b)==c)==0
         ( 1 ==c)==0
         ( 0 )==0
                  1
所以判断多个变量是否等于同一个值应该分来各自判断。