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

发布于 2025-01-01 01:41:47 字数 179 浏览 3 评论 0原文

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

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

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

What does the C++ language definition promise about casting a char to bool then back to char again?

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

Also, what do most compilers do in this case beyond what the language guarantees?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撩发小公举 2025-01-08 01:41:47

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

转换为 bool 会得到 truefalse 值:

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

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

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

This will give a value of zero or one, depending on whether the original value was zero or non-zero.

Converting to bool gives a value of true or false:

4.12 A zero value, null pointer value, or null member pointer value is converted to false;
any other value is converted to true.

Converting back to char converts false to zero, and true to one:

4.7/4 If the source type is bool, the value false is converted to zero and
the value true is converted to one.

jJeQQOZ5 2025-01-08 01:41:47

整数值转换为 bool 会产生 truefalse (4.12),而 bool 会转换为整数值结果在 10 (4.5(6)) 中。请参阅第 4 章(标准转换)。

Integral values converted to bool result in either true or false (4.12), and bool converted to integral values results in either 1 or 0 (4.5(6)). See Chapter 4 (Standard Conversions).

柒七 2025-01-08 01:41:47

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

When converting to bool zero and null are converted to false, and everything else is converted to true. When converting from bool false is converted to zero and true is converted to one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文