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年前关闭。
我是编程新手,并且有关于在一行上使用多个运算符的问题。
说,我有
在此示例中,我可以使用一系列赋值运算符:
但是我怎么不能使用:
(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