Operador de avaliação seqüencial
O operador seqüencial de avaliação, também chamado de "operador de vírgula", avalia seus dois operandos seqüencialmente da esquerda para a direita.
Sintaxe
expressão:
expressão de atribuiçãoexpressão , expressão de atribuição
O operando esquerdo do operador seqüencial de avaliação é avaliado como um void expressão.O resultado da operação tem o mesmo valor e tipo, como o operando da direita.Cada operando pode ser de qualquer tipo.O operador seqüencial de avaliação não realiza conversões de tipo entre seus operandos e não produz um valor de l.Há um ponto de seqüência após o primeiro operando, o que significa que todos os efeitos do lado de avaliação de operando esquerdo são concluídos antes de iniciar a avaliação do operando à direita.Consulte Pontos de seqüência para obter mais informações.
O operador de seqüencial de avaliação é normalmente usado para avaliar expressões de dois ou mais contextos onde apenas uma expressão é permitida.
Podem ser usadas vírgulas como separadores em alguns contextos.No entanto, você deve ter cuidado para não confundir o uso de vírgula como separador, com seu uso como um operador; os dois usos são completamente diferentes.
Exemplo
Este exemplo ilustra o operador seqüencial de avaliação:
for ( i = j = 1; i + j < 20; i += i, j-- );
Neste exemplo, cada operando da para expressão de terceiro da instrução é avaliada de forma independente.O operando esquerdo i += i é avaliado primeiro; em seguida, o operando da direita, j––, é avaliada.
func_one( x, y + 2, z );
func_two( (x--, y + 2), z );
Na função de chamada para func_one, são passados três argumentos, separados por vírgulas,: x, y + 2, e z.Na função de chamada para func_two, parênteses forçar o compilador para interpretar a primeira vírgula como o operador seqüencial de avaliação.Essa chamada de função passa dois argumentos para func_two.O primeiro argumento é o resultado da operação seqüencial de avaliação (x--, y + 2), que tem o valor e o tipo da expressão y + 2; o segundo argumento é z.