Operador vírgula:,

Permite agrupar duas instruções onde uma é esperada.

expression , expression

Comentários

O operador de vírgula tem associatividade da esquerda para a direita.Duas expressões separadas por uma vírgula são avaliadas da esquerda para a direita.O operando esquerdo é sempre avaliado, e todos os efeitos lado são concluídos antes que o operando da direita é avaliado.

Podem ser usadas vírgulas como separadores em alguns contextos, como listas de argumentos de função.Não confunda o uso de vírgula como separador, com seu uso como um operador; os dois usos são completamente diferentes.

Considere a expressão.

e1 , e2

O tipo e o valor da expressão são o tipo e valor de e2; o resultado da avaliação de e1 é descartado.O resultado é um l-value, se o operando da direita é um l-value.

Onde a vírgula é normalmente usada como separador (por exemplo, em argumentos reais para funções ou inicializadores agregados), o operador vírgula e seus operandos devem ser colocados entre parênteses.Por exemplo:

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

Na função de chamada para func_one acima, os três argumentos, separados por vírgulas, são passados: 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.

Exemplo

// cpp_comma_operator.cpp
#include <stdio.h>
int main () {
   int i = 10, b = 20, c= 30;
   i = b, c;
   printf("%i\n", i);

   i = (b, c);
   printf("%i\n", i);
}
  

Consulte também

Referência

Expressões com operadores binários

Operadores do C++

Precedência e associatividade de operadores

Conceitos

Operador de avaliação seqüencial