Operatore di valutazione sequenziale

L'operatore valutazione-sequenziale, noto anche come "operatore virgola," restituisce i propri due operandi in sequenza, da sinistra verso destra.

Sintassi

expression:
assignment-expression
expression , assignment-expression

L'operando sinistro dell'operatore di valutazione sequenziale (,) viene valutato come void espressione. Il risultato dell'operazione avrà lo stesso valore e lo stesso tipo dell'operando destro. Ogni operando può essere di qualsiasi tipo. L'operatore di valutazione sequenziale non esegue conversioni di tipi tra i relativi operandi e non restituisce un valore l. C'è un punto di sequenza dopo il primo operando, il che significa che tutti gli effetti collaterali della valutazione dell'operando sinistro vengono completati prima di iniziare la valutazione dell'operando destro. Per altre informazioni, vedere Sequence Points.For more information, see Sequence Points.

L'operatore valutazione-sequenziale viene in genere utilizzato per valutare due o più espressioni in contesti in cui sono consentite solo le espressioni.

In alcune situazioni è possibile utilizzare le virgole come separatori. Tuttavia, è necessario prestare attenzione a non confondere l'uso della virgola come separatore con il relativo uso come operatore; i due usi sono distinti.

Esempio

In questo esempio è illustrato l'operatore valutazione-sequenziale:

for ( i = j = 1; i + j < 20; i += i, j-- );

In questo esempio ogni operando della terza espressione dell'istruzione for viene valutato in modo indipendente. L'operando sinistro i += i viene valutato per primo; quindi viene valutato l'operando destro j--.

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

Nella chiamata di funzione a func_one, 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.

Vedi anche

Operatore virgola: ,