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