首页 > 后端开发 > C++ > C 如何将布尔值隐式转换为整数?

C 如何将布尔值隐式转换为整数?

Susan Sarandon
发布: 2024-12-03 20:47:11
原创
664 人浏览过

How Does C   Implicitly Convert Boolean Values to Integers?

隐式转换:bool 到 int 转换

在 C 中,将 bool 表达式分配给 int 变量时会发生非直观转换。考虑以下代码片段:

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

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

转换详细信息

根据 C 标准(C 11/14 中的 §4.7/4,C 11/14 中的 §7.8/4) C 17,C 中的 §7.3.9/2 20):

  • bool 值 false 隐式转换为 0。
  • bool 值 true 隐式转换为 1。

因此,在给定的代码,4 5 5 的计算结果为 false,会转换为 0 并存储在 x 中。

可移植性

这种隐式 bool 到 int 的转换在所有 C 平台上都是可移植的。

与 C 的比较

与 C 不同,在 C99 标准之前,C 并未明确支持 bool 数据类型。然而,C99 标准引入了 _Bool 类型,它相当于 C 中的 bool 。在 C99 中,宏 true 和 false 分别扩展为整数常量 1 和 0。因此,bool 到 int 的转换行为在 C 和 C 中都是相似的。

结论

给定代码中的隐式 bool 到 int 转换符合标准并可跨 C 平台移植。虽然它可能看起来不正统,但它对于理解 C 语言的底层行为至关重要。

以上是C 如何将布尔值隐式转换为整数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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