7

C++ 语言定义对将 char 转换为 bool 然后再次转换为 char 有什么承诺?

char original = 255;
bool next = original;
char final = next;

此外,在这种情况下,大多数编译器会在语言保证之外做什么?

4

3 回答 3

14

这将给出零或一的值,具体取决于原始值是零还是非零。

转换为或bool的值:truefalse

4.12 零值、空指针值或空成员指针值转换为false;任何其他值都转换为true.

转换回char转换false为零和true一:

4.7/4 如果源类型为bool,则将值false转换为 0,并将值true转换为 1。

于 2012-01-31T15:46:16.347 回答
3

整数值转换为booltruefalse4.12),并bool转换为整数值导致10(4.5(6))。请参阅第 4 章(标准转换)。

于 2012-01-31T15:46:08.530 回答
2

转换为 bool 零和 null 时转换为 false,其他所有内容都转换为 true。从 bool 转换时,false 转换为零,true 转换为 1。

于 2012-01-31T15:48:15.533 回答