我们都知道 C++(虽然不是超集)几乎是从 C 派生的。
在 C++ 中,运算符 <、<=、>、>=、== 和 != 都有布尔返回值。但是,在 C 中,相同的运算符返回 1 或 0,因为 C 中没有“布尔”类型。
由于除 0 之外的所有整数值都被视为“真”,而 0 为“假”,我想知道:
C++ 是否仍将运算符的返回值限制为 1 与 0,或者这些运算符之一的“真”是否返回任何 1 字节值,只要它不是 0?
我想知道,因为使用这些返回值作为显式 1 或 0 在不分支的按位运算中很有用。
作为一个可怕的例子,采取以下措施:
bool timesTwo;
int value;
//...
if(timesTwo)
value << 1;
//vs
value << (int) timesTwo;