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。”
因此,在给定的情况下代码:
C 注释:
在 C 中,bool 数据类型不是展示。然而,C99引入了_Bool类型,它是stdbool.h头文件中定义的宏。此外,true 和 false 分别是扩展为整数常量 1 和 0 的宏。
因此,在 C:
以上是Bool 到 Int 的转换可以在 C 和 C 中移植吗?的详细内容。更多信息请关注PHP中文网其他相关文章!