我是编程新手,并且有关于在一行上使用多个运算符的问题。
说,我有
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评论后展开)
詹姆斯,您的困惑来自x = y = z;
将链式运算符视为一种特殊情况。实际上,它遵循与其他所有情况相同的规则。
此表达式的行为与之类似,因为赋值=
是从右到左的关联,并返回其右手操作数。没有特别的规则,不要期望它们x < y < z
。
顺便说一句,x == y == z
也不会像您期望的那样工作。
另请参阅此答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句