首页 > 后端开发 > C++ > Bool 到 Int 的转换可以在 C 和 C 中移植吗?

Bool 到 Int 的转换可以在 C 和 C 中移植吗?

Barbara Streisand
发布: 2024-12-06 02:50:15
原创
171 人浏览过

Is Bool-to-Int Conversion Portable in C and C  ?

bool 到 int 转换

考虑以下代码片段:

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);
登录后复制

问题出现了:这个转换是不是便携的?我们能保证两个断言都通过吗?

答案:

是的,这个转换是完全可移植的并且符合 C 标准。从 bool 到 int 的显式转换在 C 中是隐式的,如 C 11 或 14 标准的 §4.7/4 以及 C 17 标准的 §7.8/4 中所定义。

具体来说,该标准指出: “如果源类型为 bool,则值 false 会转换为 0,值 true 会转换为 1。”

因此,在给定的情况下代码:

  • 4
  • 4 > 5 计算结果为 false,隐式转换为 0 并存储在 x 中。

C 注释:

在 C 中,bool 数据类型不是展示。然而,C99引入了_Bool类型,它是stdbool.h头文件中定义的宏。此外,true 和 false 分别是扩展为整数常量 1 和 0 的宏。

因此,在 C:

  • 4
  • 4
  • 中, 5 的计算结果为整数值 1。
4 > 5 的计算结果为整数值 0。

以上是Bool 到 Int 的转换可以在 C 和 C 中移植吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板