Поделиться через


Порядок вычисления

В этом разделе рассматривается порядок, в котором выражения оцениваются, но не описание синтаксиса или семантики операторов в этих выражениях.Более ранние разделах содержатся полную ссылку для каждого из этих операторов.

Выражения вычисляются по приоритету и группированию их операторов.(Operator precedence and Associativity IN Лексических правилуказывает, что связи задается в выражениях операторы 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. Левый миграция (<<) имеет самый низкий приоритет в выражении, но 2 вхождения.Поскольку слева направо групп оператора, лев-переноса левой части выражения вычисляются в первую очередь, а затем справа.

Если скобки используются для группирования части выражения, они изменяют приоритет, а также порядок, в котором вычисляется выражение, как показано на следующем рисунке.

Порядок вычисления выражений со скобками

Порядок вычисление выражений в круглых скобках

Выражения например, в приведенной выше таблице оцениваются только для них побочных эффектов - в этом случае для получения сведений на стандартное устройство вывода.

См. также

Ссылки

Семантики выражений