Порядок вычисления
В этом разделе рассматривается порядок, в котором выражения оцениваются, но не описание синтаксиса или семантики операторов в этих выражениях.Более ранние разделах содержатся полную ссылку для каждого из этих операторов.
Выражения вычисляются по приоритету и группированию их операторов.(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
Порядок вычисления выражений
Порядок, в котором вычисляется выражение, отображаемое в приведенной выше таблице определен приоритет и ассоциативность операторов:
Умножение (*) имеет наиболее высокий приоритет среди в этом выражении; поэтому часть выражения b * c является первым.
Сложение (+) имеет следующий наиболее высокий приоритет да a добавляет к продукту b и c.
Левый миграция (<<) имеет самый низкий приоритет в выражении, но 2 вхождения.Поскольку слева направо групп оператора, лев-переноса левой части выражения вычисляются в первую очередь, а затем справа.
Если скобки используются для группирования части выражения, они изменяют приоритет, а также порядок, в котором вычисляется выражение, как показано на следующем рисунке.
Порядок вычисления выражений со скобками
Выражения например, в приведенной выше таблице оцениваются только для них побочных эффектов - в этом случае для получения сведений на стандартное устройство вывода.