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

actual value stored in a bool variable if a large value is assigned

本文关键字:布尔 变量 存储 分配 如果      更新时间:2023-10-16

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

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

这是规范中定义的吗?此行为是否依赖于编译器?

谢谢

Bool 是标准定义的内置类型。它支持从数字类型赋值以实现 C 兼容性。

当分配一个不同于零的数值时,布尔变量变为 true。当分配零时,它变为假。

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