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

Wil*_*mKF 7 c++ casting boolean roundtrip language-lawyer

C++语言定义对于将一个char转换为bool然后再返回char有什么作用?

char original = 255;
bool next = original;
char final = next;
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*our 14

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

转换为bool给出值truefalse:

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

转换回char转换false为零,并转换为true:

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