C++ · Avançado · Português · Técnico
ordem de avaliação
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 ordemExemplos
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