在if语句之外使用==?

时间:2012-10-17 15:32:40

标签: c++ c

我只见过在if语句中使用“==”。那么“==”在这种情况下如何运作?

a = 5;
b = (a == 18 % 13);

4 个答案:

答案 0 :(得分:7)

如果bbool,您可以为其指定表达式的结果。在这种情况下,如果条件a == 18 % 13成立,b将成为true,否则为false

基本上,

a == 18 % 13 - would yield b = true or b = 1

a != 18 % 13 - would yield b = false or b = 0

取决于b的类型。

答案 1 :(得分:4)

a == 18 % 3

相当于

a == (18%3)

因为模运算符%的优先级高于等于运算符==

此表达式的计算结果为truefalse(在本例中为true)。因此,您要将结果分配给变量bb本身可以是bool或任何可以从bool转换的内容。

答案 2 :(得分:1)

好的,让我们把它分解......

问题是:

a = 5, b=(a==18%13); // What is b?

我们将从方括号开始。 %,称为模数运算符,为您提供除以两个数字的余数。所以18/13给你1余数5.所以:

18%13 = 5;

// so now we have
b=(a==5);

现在等价运算符==只能返回true或false,1或0.这与询问左操作数是否等于右操作数相同。在这种情况下:

 5 == 5; returns true or 1;

因此b = 1;

答案 3 :(得分:-1)

C和C ++不是 高级别。它们没有真正的布尔类型(尽管在C ++和C99中有typedef用于提供一些小宽度整数类型作为布尔值),因此任何非零整数,浮点或指针值都被视为布尔值true和零视为false 。因此,逻辑表达式计算为1(真)或0(假),因此可以分配给整数。