C++ 语言定义对将 char 转换为 bool 然后再次转换为 char 有什么承诺?
char original = 255;
bool next = original;
char final = next;
此外,在这种情况下,大多数编译器会在语言保证之外做什么?
C++ 语言定义对将 char 转换为 bool 然后再次转换为 char 有什么承诺?
char original = 255;
bool next = original;
char final = next;
此外,在这种情况下,大多数编译器会在语言保证之外做什么?
这将给出零或一的值,具体取决于原始值是零还是非零。
转换为或bool
的值:true
false
4.12 零值、空指针值或空成员指针值转换为
false
;任何其他值都转换为true
.
转换回char
转换false
为零和true
一:
4.7/4 如果源类型为
bool
,则将值false
转换为 0,并将值true
转换为 1。
整数值转换为bool
或true
(false
4.12),并bool
转换为整数值导致1
或0
(4.5(6))。请参阅第 4 章(标准转换)。
转换为 bool 零和 null 时转换为 false,其他所有内容都转换为 true。从 bool 转换时,false 转换为零,true 转换为 1。