Operatore virgola: ,

Consente di raggruppare due istruzioni dove previsto.

Sintassi

expression , expression

Osservazioni:

L'operatore virgola presenta un'associatività da sinistra verso destra. Due espressioni separate da virgole vengono valutate da sinistra a destra. L'operando sinistro è sempre valutato e tutti gli effetti collaterali vengono completati prima che venga valutato l'operando destro.

Le virgole possono essere utilizzate come separatori in alcuni contesti, ad esempio gli elenchi di argomenti della funzione. Non confondere l'utilizzo della virgola come separatore con il relativo utilizzo come operatore, i due utilizzi sono completamente differenti.

Valutare l'espressione e1, e2. Il tipo e il valore dell'espressione sono il tipo e il valore di e2. Il risultato della valutazione di e1 viene rimosso. Il risultato è un l-value se l'operando destro è un l-value.

Quando la virgola viene normalmente utilizzata come separatore (ad esempio negli argomenti effettivi alle funzioni o agli inizializzatori di aggregazione), l'operatore virgola e i relativi operandi devono essere racchiusi tra parentesi. Ad esempio:

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

Nella chiamata di funzione a func_one su riportata, vengono passati tre argomenti, separati da virgole: x, y + 2 e z. Nella chiamata di funzione a func_two, le parentesi forzano il compilatore a interpretare la prima virgola come operatore di valutazione sequenziale. Questa chiamata di funzione passa due argomenti a func_two. Il primo argomento è il risultato dell'operazione di valutazione sequenziale (x--, y + 2) che ha il valore e il tipo dell'espressione y + 2; il secondo argomento è z.

Esempio

// 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);
}
20
30

Vedi anche

Espressioni con operatori binari
Operatori C++, precedenza e associazione
Operatore di valutazione sequenziale