在 C/C++ 中将整数评估为布尔值时,负数是真还是假?无论编译器如何,它们总是正确/错误吗?
所有非零值将被转换为true
,和零值false
。当负数非零时,它们会被转换为true
.
引用 C++11 标准(强调我的):
4.12 布尔转换 [conv.bool]
1 算术、无作用域枚举、指针或指针的纯右值
to 成员类型可以转换为 bool 类型的纯右值。一个零
value、空指针值或空成员指针值被转换
到false
;任何其他值都会转换为true
.类型的纯右值
std::nullptr_t 可以转换为 bool 类型的纯右值;这
结果值为假。
无论编译器如何,它们总是正确/错误吗?
仅当您的编译器符合标准,或者至少符合标准的此特定部分时,您才会获得上述保证。实际上,所有编译器都有这种标准行为,因此无需担心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)