C++中3个变量间能否连用2个运算符?连续!=判断为何出错
代码运行不符合预期的核心原因
- C语言中
!=关系运算符遵循左结合规则,你写的a != b != c != d不会被识别为「判断四个变量是否全部相等/互不相等」,会被编译器解析为((a != b) != c) != d,和你的预期逻辑完全不符。 - 关系运算符的返回值为int类型:条件成立返回1,不成立返回0。代入你给出的变量值
a=1,b=2,c=3,d=4,实际运算过程如下:- 先运算
a != b:1≠2成立,返回结果1 - 再运算第一步的结果和c的比较
1 != 3:成立,返回结果1 - 最后运算第二步的结果和d的比较
1 != 4:成立,返回结果1,最终整个if判断为真
这个运算逻辑和你要判断四个整数是否全部相等的需求没有任何关联,自然结果不符合预期。
- 先运算
- 如果你要判断四个整数全部相等,正确的写法是用逻辑与
&&拼接所有两两相邻的相等判断:
如果你要判断四个整数互不相等,需要用逻辑与拼接所有两两不等的判断:if (a == b && b == c && c == d) { // 四个数全部相等时执行 }if (a != b && a != c && a != d && b != c && b != d && c != d) { // 四个数互不相等时执行 }
内容的提问来源于stack exchange,提问作者Akhil Arya
相关产品推荐
相关产品推荐

