C 语言中的 Bool 和 Int 可以跨编译器相等吗?
在 C 语言中,程序员经常会遇到需要比较不同类型的值的情况,例如作为 bool 和 int。出现一个常见问题:对于任何 C 编译器,我们是否可以安全地假设 (bool)true 等于 (int)1?
答案:是的,但强制转换是冗余的
表达式 (bool)true == (int)1 中的强制转换是不必要的。 C 在比较过程中自动将 bool 值提升为 int。此提升的结果为值 1。
该行为由 [conv.integral] / 4 中的 C 标准定义:
“如果源类型为 bool...true 将转换为 1。 "
因此,表达式 true == 1 相当于 1 == 1,这是一个真实的比较。此行为在所有 C 编译器中都是一致的。
以上是在不同编译器的 C 比较中,'true”和'1”是否始终被视为相等?的详细内容。更多信息请关注PHP中文网其他相关文章!