<分区>
分组运算符和操作数以及求值的顺序是C++中表达式的两个重要概念。
分组
对于具有多个运算符的表达式,操作数如何与特定运算符分组由优先级和结合性决定 运算符,并且可能取决于求值顺序。
订单
在 C++ 中,只有 4 个运算符具有指定的求值顺序(逻辑与、逻辑或、条件运算符和逗号运算符)。对于其他运算符,评估顺序未指定。
括号
括号可以覆盖优先级和结合性,因此指定复合表达式的分组。
然而,book Peter Gottschling 声称括号可以改变评估的顺序。我个人对此表示怀疑;我认为这是一个错误!在下面引用的示例中,括号没有说明 x
、y
和 z
中的哪个表达式先求值,哪个在后求值哪一个是最后一个。它仅将表达式 y + z
分组为 *
运算符的左操作数。
An expression surrounded by parentheses is an expression as well, e.g.,
(x + y)
. As this grouping by parentheses precedes all operators, we can change the order of evaluation to suit our needs:x * (y + z)
computes the addition first. Discovering Modern C++, Chapter 1.4.1
问题
括号可以覆盖表达式的求值顺序吗?