隐式转换: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):
因此,在给定的代码,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中文网其他相关文章!