This question already has answers here:
Is (4 > y > 1) a valid statement in C++? How do you evaluate it if so?

(5个答案)



Language support for chained comparison operators (x < y < z)

(5个答案)


1年前关闭。




我是编程新手,并且有关于在一行上使用多个运算符的问题。

说,我有
int x = 0;
int y = 1;
int z = 2;

在此示例中,我可以使用一系列赋值运算符:x = y = z;
但是我怎么不能使用:x < y < z;

最佳答案

这是因为您将这些表达式视为“运算符链”,但是C++没有这样的概念。 C++将按其优先级和关联性(https://en.cppreference.com/w/cpp/language/operator_precedence)确定的顺序分别执行每个运算符。

(在C Perkins评论后展开)

James,您的困惑来自将x = y = z;视为链式运算符的一种特殊情况。实际上,它遵循与其他所有情况相同的规则。

此表达式的行为与之类似,因为赋值=是从右到左的关联,并返回其右手操作数。没有特殊的规则,不要期望它们用于x < y < z

顺便说一句,x == y == z不会像您期望的那样工作。

另请参见this answer

关于c++ - 我可以做x = y = z。在C++中为什么不允许x <y <z? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58358046/

10-09 17:15