我只见过在if语句中使用“==”。那么“==”在这种情况下如何运作?
a = 5;
b = (a == 18 % 13);
答案 0 :(得分:7)
如果b
是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
的类型。
答案 1 :(得分:4)
此
a == 18 % 3
相当于
a == (18%3)
因为模运算符%
的优先级高于等于运算符==
。
此表达式的计算结果为true
或false
(在本例中为true
)。因此,您要将结果分配给变量b
。 b
本身可以是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(假),因此可以分配给整数。