许多编译器似乎只在bool值中保留0或1,但我不确定这是否总是有效:
int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?
许多编译器似乎只在bool值中保留0或1,但我不确定这是否总是有效:
int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?
对:
在C++中(§4.5/4):
bool类型的右值可以是 转换为INT类型的右值, 假变成零,真变成真 成为其中一员.
在C中,当值转换为_Bool
时,它将变为0或1(§6.3.1.2/1):
当任何标量值转换为
当转换到int
,这是非常直接的.int
可以容纳0和1,因此值没有变化(§6.3.1.3).