0

我的试卷中有一个问题,我们必须比较 int 类型变量的值。我想到的第一个想法是它缺少 && 运算符,但我不确定。

int a=2, b=2, c=2;
if(a==b==c)
{
    printf("hello");
}

我有一个疑问,上面的语句会在 c 或 c++ 中执行吗?我也可以有原因吗?谢谢你

4

4 回答 4

10

它会执行,但我相信你会得到意想不到的结果。

其中一个==将评估为布尔值,然后将其转换为 an int,然后将执行第二次比较,将 anint1or进行比较0

正确的说法是a==b && b==c

例如:

3 == 3 == 3

评估为

true == 3
1 == 3
false
于 2013-07-08T18:13:40.510 回答
2
a==b==c

相当于

(a == b) ==  c

结果a == b1(如果为真)或0(如果为假),因此它可能无法达到您的预期。

用于a == b && b == c检查三个对象的值是否相等。

于 2013-07-08T18:14:29.093 回答
0

a == b == c 是 c 与 a==b(1 或 0)运算结果之间的比较。

于 2013-07-08T19:49:04.683 回答
-1

使用a==b&&b==c. 条件a==b==c相当于(a==b)==cif c==1 将提供所需结果,否则代码将失败。

于 2013-07-08T18:21:09.233 回答