Compartilhar via


Ordem de avaliação

Esta seção discute a ordem na qual as expressões são avaliadas mas não explica a sintaxe ou a semântica dos operadores nessas expressões.As seções anteriores fornecem uma referência completa para cada um desses operadores.

Expressões são avaliadas de acordo com a precedência e o agrupamento dos seus operadores.(Precedência e associatividade na Convenções Lexical, mostra as relações C++ operadores impõem em expressões.) Considere este exemplo:

Exemplo

// 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";
}

Saída

38
38
54

Ordem de avaliação de expressões

Ordem de avaliação de expressão

A ordem na qual a expressão mostrada a figura acima é avaliada é determinada pelo precedência e associatividade dos operadores:

  1. Multiplicação (*) tem a precedência mais alta nessa expressão; daí a subexpressão b * c é avaliado primeiro.

  2. Adição (+) tem maior precedência, portanto, a é adicionado ao produto da b e c.

  3. Shift esquerda (<<) tem a menor precedência na expressão, mas há duas ocorrências.Porque o operador shift esquerda agrupa esquerda para a direita, a esquerda subexpressão é avaliado primeiro e, em seguida, o direito de um.

Quando os parênteses são usados para agrupar os subexpressões, eles alteram a precedência e a ordem na qual a expressão é avaliada, conforme mostrado na figura a seguir.

Ordem de avaliação de expressões com parênteses

Ordem de avaliação de expressões com parênteses

Expressões como na figura acima são avaliadas puramente para seus efeitos colaterais — neste caso, para transferir informações para o dispositivo de saída padrão.

Consulte também

Referência

Semântica de expressões