计算顺序

本节讨论表达式的计算顺序,但不声明语法或运算符的语义这些表达式的。前面的章节提供完整为这些运算符的每个引用。

表达式基于优先级和分组的运算符计算。(在 词法约定,显示的运算符优先级和结合性 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

表达式计算顺序

表达式计算顺序

在上述图中显示的表达式的计算顺序由运算符的优先级和结合性:

  1. 乘法 (*) 具有最高优先级此表达式;因此子表达式 b * c 首先计算。

  2. 加号 (+) 具有下一个高优先级,因此, a 添加到 b 和 c产品。

  3. 左移 (AMP_LTAMP_LT) 具有最低的优先级在表达式中,但是,有两个匹配项。由于从左到右左移运算符的组中,左子表达式首先然后计算正确的文件。

当括号用于组子表达式时,如下图所示,他们修改该计算表达式的优先级和命令,。

带括号的表达式计算顺序

带括号表达式的计算顺序

表达式如上述正在为其副作用是纯粹的计算 (在这种情况下,调用信息到标准输出设备。

请参见

参考

表达式语义