链式逻辑运算符:计算 C 中的 (4 > y > 1)
C 中的语句 (4 > y > 1)看似合乎逻辑,但其评估遵循特定的操作顺序。
解析和求值顺序
语句被解析为 ((4 > y) > 1)。比较运算符(< 和 >)从左到右计算表达式 4。 > y 如果为 true,则返回 0;如果为 false,则返回 1。然后将该结果与 1 进行比较。
结果评估
由于 0 或 1 永远不会大于 1,因此整个语句将始终返回 false,但是,当 y 是重载了 > 运算符的类的对象时,会发生异常。在这种情况下,重载运算符的行为决定了结果。
重载异常
考虑以下代码片段:
class mytype{}; mytype operator>(int x, const mytype &y) { return mytype(); } int main() { mytype y; cout << (4 > y > 1) << endl; return 0; }在此示例中,其中 y 属于 mytype 类并且重载了 > 运算符,代码将无法编译。
以上是C 如何评估链式比较运算符(如 (4 > y > 1))?的详细内容。更多信息请关注PHP中文网其他相关文章!