1)为什么逻辑运算符没有赋值,就像总和和差异一样?
bool a = true;
bool b = false;
a = a || b;
a ||= b; // syntax error!
a |= b; // OK.
2)在布尔变量上应用bitwise运算符是什么意思? 它与使用逻辑运算符相同吗?
答案 0 :(得分:4)
确实&&=
和||=
从C中“缺失”。我认为一个原因是C中的逻辑AND和OR执行短路,这在缩写中会有点奇怪形成。但是不要在它们的位置使用按位赋值运算符。相反,只需写下:
a = a && b;
c = c || d;
如果您具有规范的真/假值(1和0),则按位运算符将起作用。但如果应用于非规范值,例如5和2,您将得到不同的结果(5&& 2为1,但5& 2为0)。
答案 1 :(得分:2)
a |= b
表示与a = (a | b)
相同,但a的地址仅评估一次。然后你查找促销规则,并分配给bool。
答案 2 :(得分:1)
C语言只允许使用这些复合语句
*= /= %= += -= <<= >>= &= ^= |=
||=
没有有效的语法。
请注意,C中的bool
是整数类型。 true
为1
,false
为0
。可以在bool
上应用按位运算符。