布尔值转换为整数时是否总是为零或一?
当将布尔值转换为整数时,许多编译器似乎仅保留 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)。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3