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