首页 >后端开发 >C++ >在不同编译器的 C 比较中,'true”和'1”是否始终被视为相等?

在不同编译器的 C 比较中,'true”和'1”是否始终被视为相等?

Susan Sarandon
Susan Sarandon原创
2024-11-30 01:50:10233浏览

Can `true` and `1` Always Be Considered Equal in C   Comparisons Across Different Compilers?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn