Bool 转换为 Int:保证为 0 或 1?
在 C 和 C 等编程语言中,bool 常用来表示true 和 false 的布尔值。然而,在幕后,这些值通常存储为整数。这就提出了一个问题:当 bool 转换为 int 时,结果是否保证为 0 或 1?
C
在 C 中,答案是响亮的是。根据 C 标准 (§4.5/4),“bool 类型的右值可以转换为 int 类型的右值,其中 false 变为 0,true 变为 1。”这意味着当 C 中 bool 转换为 int 时,结果将始终为 0 或 1。
C
在 C 中,情况略有不同但同样清楚。根据 C 标准 (§6.3.1.2/1),“当任何标量值转换为 _Bool 时,如果该值比较等于 0,则结果为 0;否则,结果为 1。”这意味着当 bool(在 C 中表示为 _Bool)转换为 int 时,结果将再次为 0 或 1。
实际示例
来说明代码中的行为:
int a = 2; bool b = a; int c = 3 + b; // 4
在此示例中,bool 变量 b 被初始化为 int a 的值(即 2),但由于 bool 值存储为 0 或 1,因此 b 变为 1 . 随后添加 3 会导致 c 被赋值为 4。这确认了 bool 被转换为 int 作为 1,保证结果为 0 或 1。
以上是C 和 C 中 Bool 转换为 Int 总是 0 或 1 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!