首页 >后端开发 >C++ >C 如何评估链式比较运算符(如 (4 > y > 1))?

C 如何评估链式比较运算符(如 (4 > y > 1))?

Patricia Arquette
Patricia Arquette原创
2024-12-14 18:29:15343浏览

How Does C   Evaluate Chained Comparison Operators Like (4 > y > 1)?
” /> y > 1)?

链式逻辑运算符:计算 ​​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中文网其他相关文章!

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