我的测试文件中有一个问题,我们必须比较int类型变量的值。我想到的第一个想法就是错过了&&运营商,但我不确定。
int a=2, b=2, c=2;
if(a==b==c)
{
printf("hello");
}
我有疑问,上述陈述是否会在c或c ++中执行?我也有理由吗? 谢谢
答案 0 :(得分:10)
它会执行,但我认为你会有意想不到的结果。
其中一个==
将评估为布尔值,然后将其转换为int
,然后执行第二次比较,将int
与1
进行比较1}}或0
。
正确的陈述是a==b && b==c
。
例如:
3 == 3 == 3
评估为
true == 3
1 == 3
false
答案 1 :(得分:2)
a==b==c
相当于
(a == b) == c
a == b
的结果是1
(如果为真)或0
(如果为假),那么它可能无法达到您的预期。
使用a == b && b == c
检查三个对象的值是否相等。
答案 2 :(得分:0)
a == b == c是c与== b(1或0)操作的结果之间的比较。
答案 3 :(得分:-1)
使用a==b&&b==c
。
条件a==b==c
相当于(a==b)==c
,如果c == 1,它将提供所需的结果,否则代码将失败。