4

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

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

4 回答 4

7

如果b是 a bool,您可以将表达式的结果分配给它。在这种情况下,如果条件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.

于 2012-10-17T15:33:57.637 回答
4

a == 18 % 3

相当于

a == (18%3)

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

此表达式的计算结果为truefalse(实际上,true在这种情况下)。因此,您将其结果分配给 variable bb本身可以是 abool或任何可以从bool.

于 2012-10-17T15:35:23.840 回答
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;

于 2012-10-17T15:42:16.517 回答
-1

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

于 2012-10-17T15:36:53.043 回答