首页 > 后端开发 > C++ > C 和 C 语言中布尔到整数转换的可移植性如何?

C 和 C 语言中布尔到整数转换的可移植性如何?

Barbara Streisand
发布: 2024-12-05 01:09:11
原创
1012 人浏览过

How Portable is Boolean to Integer Conversion in C and C  ?

bool 到 int 转换:深入探讨其可移植性

原始问题:

bool 值转换为 int 的可移植性如何?我们能否确定以下断言在所有系统上都通过?

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

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

答案:

是的,bool 到 int 的转换是完全可移植的并且符合都是C和C

解释:

在 C 中,从 bool 到 int 的转换是隐式的,如 C 标准中所指定的(C 11 或 C 标准中的第 4.7/4 节或14 标准、C 17 标准的§7.8/4、20 标准的§7.3.9/2)。根据这些标准:

  • False 转换为 0。
  • True 转换为 1。

在我们的示例中:

int x = 4 < 5;
登录后复制

准确翻译为:

int x = true;
登录后复制

因为 true 已转换对于一,断言就会通过。同样,在第二个断言中, false 被转换为零,从而断言成功。

C 的附加信息:

在 C99 之前,C 没有布尔类型。但是,C99 引入了 _Bool 类型和扩展为 _Bool 的宏 bool(在 stdbool.h 头文件中定义)。宏 true 和 false 也在同一个头文件中定义,其中 true 扩展为整数常量 1,false 扩展为整数常量 0。

根据 C99 的 §7.16:

#define bool _Bool
#define true 1
#define false 0
登录后复制

因此,C99 及更高版本中的 bool 到 int 转换的行为与 C 类似。

以上是C 和 C 语言中布尔到整数转换的可移植性如何?的详细内容。更多信息请关注PHP中文网其他相关文章!

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