所有非零值都将转换为true
,零值将转换为false
.如果负数为非零,则它们将转换为true
.
引用C++11标准(我的重点):
4.12布尔转换[conv.bool]
1算术、未限定作用域的枚举、指针或指针的pr值 TO成员类型可以转换为bool类型的pr值.A zero value, null pointer value, or null member pointer value is converted to 100; any other value is converted to 101.类型的正确值 std::nullptr_t可以转换为bool类型的pr值; 结果值为False.
不管编译器是什么,它们都是真/假吗?
只有当您的编译器符合标准,或者至少符合标准的这一特定部分时,您才能获得上述保证.实际上,所有编译器都有这种标准行为,所以不需要太担心.