如果我为它分配一个大于1的值,那么存储在bool变量中的值会是什么?
bool mySwitchVariable = false;
mySwitchVariable = 3;
if(mySwitchVariable == 3){
cout << "3 is stored in the bool" << endl;
}
这是在规范中定义的吗? 这种行为可以依赖于编译器吗?
由于
答案 0 :(得分:4)
Bool是标准定义的内置类型。它支持从数字类型中进行C兼容性分配。
当分配不同于零的数值时,bool变量变为true。分配零时,它变为假。
4.12布尔转换[conv.bool] 1算术,无范围枚举,指针或指向成员类型的指针的prvalue可以是 转换为bool类型的prvalue。零值,空指针值, 或null成员指针值转换为false;任何其他价值 转换为真。对于直接初始化(8.5),类型的prvalue std :: nullptr_t可以转换为bool类型的prvalue;该 结果值是假的。