Partilhar via


Operador de avaliação sequencial

O operador de avaliação sequencial, também chamado de "operador vírgula", avalia seus dois operandos em sequência da esquerda para a direita.

Sintaxe

  • expression:
    assignment-expression

    expression , assignment-expression

O operando esquerdo do operador de avaliação sequencial é avaliado como uma expressão void. O resultado da operação tem o mesmo valor e tipo que o operando direito. Cada operando pode ser de qualquer tipo. O operador de avaliação sequencial não executa conversões de tipos entre seus operandos e não produz um l-value. Há um ponto de sequência depois do primeiro operando, o que significa que todos os efeitos colaterais da avaliação do operando esquerdo são concluídos antes de iniciar a avaliação do operando direito. Consulte Pontos de sequência para obter mais informações.

Geralmente, o operador de avaliação sequencial é usado para avaliar duas ou mais expressões em contextos em que apenas uma expressão é permitida.

As vírgulas podem ser usadas como separadores em alguns contextos. Porém, você deve ter cuidado para não confundir o uso da vírgula como separador com seu uso como operador; os dois usos são completamente diferentes.

Exemplo

Este exemplo ilustra o operador de avaliação sequencial:

for ( i = j = 1; i + j < 20; i += i, j-- );

Neste exemplo, cada operando da terceira expressão da instrução for é avaliado de maneira independente. O operando esquerdo, i += i, é avaliado primeiro; em seguida, é a vez do operando direito, j––.

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

Na chamada de função para func_one, três argumentos, separados por vírgulas, são passados: x, y + 2 e z. Na chamada da função para func_two, os parênteses forçam o compilador a interpretar a primeira vírgula como o operador de avaliação sequencial. Essa chamada de função passa dois argumentos para func_two. O primeiro argumento é o resultado da operação de avaliação sequencial (x--, y + 2), que tem o valor e o tipo da expressão y + 2; o segundo argumento é z.

Consulte também

Referência

Operador de vírgula: ,