ExpertiDict

C++ · Avançado · Português · Técnico

ordem de avaliação

ˈoɾdẽ dʒi avaliaˈsɐ̃w̃substantivo

Regras que definem a ordem de cálculo das subexpressões. A ordem dos argumentos de uma função não é especificada, mas o C++17 fixou a de operadores como << e =.

Onde usar

Explica bugs como f(i++, i++) ou g(a(), b()) dependendo de qual argumento o compilador calcula primeiro. Em review, expressões com efeitos colaterais em vários argumentos devem ser separadas em linhas.

Em código

int i = 0;
int a = f(i++, i++);  // não especificada
std::cout << g() << h();   // g antes de h
auto x = p() + q();        // qualquer ordem

Exemplos

A ordem de avaliação dos argumentos não é especificada, separe as chamadas.

Desde o C++17, o << é avaliado da esquerda para a direita.

Cuidado

Precedência e associatividade não definem a ordem de avaliação: a * b + c não diz se a, b ou c é calculado antes.

Sinônimos

sequenciamento

Veja também

Todos os termos de C++