如果分配了较大的值,则存储在bool变量中的实际值

时间:2015-03-11 22:29:52

标签: c++ type-conversion

如果我为它分配一个大于1的值,那么存储在bool变量中的值会是什么?

bool mySwitchVariable = false;
mySwitchVariable = 3;
if(mySwitchVariable == 3){
    cout << "3 is stored in the bool" << endl;
}

这是在规范中定义的吗? 这种行为可以依赖于编译器吗?

由于

1 个答案:

答案 0 :(得分:4)

Bool是标准定义的内置类型。它支持从数字类型中进行C兼容性分配。

当分配不同于零的数值时,bool变量变为true。分配零时,它变为假。

  

4.12布尔转换[conv.bool] 1算术,无范围枚举,指针或指向成员类型的指针的prvalue可以是   转换为bool类型的prvalue。零值,空指针值,   或null成员指针值转换为false;任何其他价值   转换为真。对于直接初始化(8.5),类型的prvalue   std :: nullptr_t可以转换为bool类型的prvalue;该   结果值是假的。