Condividi tramite


Operatore virgola: ,

Consente di raggruppare due istruzioni dove è previsto.

expression , expression

Note

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

Virgole possono essere utilizzati come separatori in alcuni contesti, ad esempio elenchi di argomenti della funzione.Non confondere l'utilizzo della virgola come separatore con il relativo utilizzo come operatore; i due utilizzi completamente diverso.

Valutare l'espressione

e1 , e2

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

Dove la virgola in genere viene utilizzato come separatore (ad esempio gli argomenti effettivi alle funzioni o gli inizializzatori aggregati), l'operatore virgola e i propri operandi devono essere racchiusi tra parentesi.Di seguito è riportato un esempio:

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

Nella chiamata di funzione a func_one in, tre argomenti, separati da virgole, vengono passati: x, y + 2e z.Nella chiamata di funzione a func_two, le parentesi forzano il compilatore per interpretare il primo virgola come operatore di sequenziale-valutazione.questa chiamata di funzione passa due argomenti a func_two.Il primo argomento è il risultato dell'operazione di sequenziale-valutazione (x--, y + 2), che presenta 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);
}
  

Vedere anche

Riferimenti

Espressioni con gli operatori binari

Operatori di C++

Precedenza e associatività di operatore

Concetti

Operatore di Sequenziale-Valutazione