本节讨论表达式的计算顺序,但不声明语法或运算符的语义这些表达式的。前面的章节提供完整为这些运算符的每个引用。
表达式基于优先级和分组的运算符计算。(在 词法约定,显示的运算符优先级和结合性 C++ 运算符施加表达式。) 的关系请看以下示例:
示例
// expre_pluslang__pluslang_Order_of_Evaluation.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 4, c = 9;
cout << a + b * c << "\n";
cout << a + (b * c) << "\n";
cout << (a + b) * c << "\n";
}
Output
38
38
54
表达式计算顺序
在上述图中显示的表达式的计算顺序由运算符的优先级和结合性:
乘法 (*) 具有最高优先级此表达式;因此子表达式 b * c 首先计算。
加号 (+) 具有下一个高优先级,因此, a 添加到 b 和 c产品。
左移 (AMP_LTAMP_LT) 具有最低的优先级在表达式中,但是,有两个匹配项。由于从左到右左移运算符的组中,左子表达式首先然后计算正确的文件。
当括号用于组子表达式时,如下图所示,他们修改该计算表达式的优先级和命令,。
带括号的表达式计算顺序
表达式如上述正在为其副作用是纯粹的计算 (在这种情况下,调用信息到标准输出设备。