首页 > 后端开发 > C++ > C 中 (4 > y > 1) 的计算结果是否始终为 False?

C 中 (4 > y > 1) 的计算结果是否始终为 False?

Barbara Streisand
发布: 2024-12-25 16:49:09
原创
228 人浏览过

Does (4 > y > 1) 在 C 中总是评估为 False ?
y > 1) 在 C 中总是评估为 False ? " />

评估 C 中 (4 > y > 1) 的有效性

在 C 中,表达式 (4 > y > 1)可能会引发有关其有效性和评估的问题。

要理解其行为,必须了解链式比较运算符,例如 (4 > y > 1),被解析为从左到右的嵌套比较,因此语句:

(4 > y > 1)
登录后复制

被解析为:

((4 > y) > 1)
登录后复制
比较运算符(> 和 y) 的结果为 0(假)或 1(真),具体取决于比较。

然后,使用大于运算符 (>) 将 (4 > y) 的结果与 1 进行比较。但是,由于 (4 > y) 的结果。 > y) 始终为 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;
}
登录后复制
本例中,自定义运算符operator>因为使用了 mytype 类,这可能会根据类实现导致不同的行为。

以上是C 中 (4 > y > 1) 的计算结果是否始终为 False?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板