布尔值转换为整数时总是为零或一吗?
当将布尔值转换为整数时,许多编译器似乎仅保留 0 或 1,这引发了有关此行为可靠性的问题。让我们看一个例子:
int a = 2; bool b = a; int c = 3 + b; // What is the result? 4 or 5?
答案: 是的,bool 在转换为整数时保证为 0 或 1。
在 C 中:
C 标准 (§4.5/4) 明确指出:“ bool 类型的右值可以转换为 int 类型的右值,其中 false 变为 0,true 变为 1。"
在 C:
值转换时到 _Bool 时,它变为 0 或 1 (§6.3.1.2/1):“当任何标量值转换为 _Bool 时,结果为 0如果值比较等于 0,否则结果为 1。”
转换为 int 时,过程很简单,因为 int 可以容纳 0 和 1,因此值没有变化(第 6.3.1.3 节) ).
以上是将布尔值转换为整数总是得到 0 或 1 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!