我只见过在 if 语句中使用“==”。那么“==”在这种情况下是如何工作的呢?
a = 5;
b = (a == 18 % 13);
如果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
.
这
a == 18 % 3
相当于
a == (18%3)
因为模运算符%
的优先级高于等式运算符==
。
此表达式的计算结果为true
或false
(实际上,true
在这种情况下)。因此,您将其结果分配给 variable b
。b
本身可以是 abool
或任何可以从bool
.
好吧,让我们分解它..
问题是:
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;
C 和 C++ 不是那么高级。它们没有真正的布尔类型(尽管在 C++ 和 C99 中有 typedef 用于提供一些小宽度整数类型来充当布尔值),因此任何非零整数、浮点或指针值都被视为布尔值 true,而零则被视为 false . 因此,逻辑表达式的计算结果为 1(真)或 0(假),因此可以分配给整数。