通过bool进行的char往返会发生什么?

时间:2012-01-31 15:42:25

标签: c++ casting boolean language-lawyer roundtrip

C ++语言定义对于将char转换为bool然后再返回char是什么承诺?

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

此外,大多数编译器在这种情况下做了什么,超出了语言保证的范围?

3 个答案:

答案 0 :(得分:14)

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

转换为bool的值为truefalse

  

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

转换回char会将false转换为零,将true转换为1:

  

4.7 / 4如果源类型为bool,则值false将转换为零   值true将转换为一个。

答案 1 :(得分:3)

转换为bool的积分值会产生truefalse(4.12),bool转换为整数值会导致1或{ {1}}(4.5(6))。请参阅第4章(标准转换)。

答案 2 :(得分:2)

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