Come funziona l'operatore virgola in C ++?
Ad esempio, se lo faccio:
a = b, c;
Un finisce per eguagliare c?
(Sì, lo so che è facile da testare, basta documentare qui per qualcuno per trovare rapidamente la risposta.)
Aggiornamento: questa domanda ha esposto una sfumatura quando si utilizza l'operatore virgola. Giusto per documentare questo:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
Questa domanda è stata in realtà ispirata da un refuso nel codice. Quello che doveva essere
a = b;
c = d;
Diventato
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
funziona esattamente come previsto a = b; c = d;
?
b
e d
sono valutazioni di funzioni che utilizzano (e modificano) uno stato comune, l'ordine di esecuzione non è definito fino a C++17
.