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
Precedência e associatividade de operadores