Como o operador de vírgula funciona em C ++?
Por exemplo, se eu fizer:
a = b, c;
A acaba igualando b ou c?
(Sim, eu sei que isso é fácil de testar - basta documentar aqui para alguém encontrar a resposta rapidamente.)
Atualização: Esta pergunta expôs uma nuance ao usar o operador de vírgula. Apenas para documentar isso:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
Esta questão foi realmente inspirada por um erro de digitação no código. O que era para ser
a = b;
c = d;
Se tornou
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
na verdade, executa o mesmo que o pretendido a = b; c = d;
?
b
e d
são avaliações de função que usam (e modificam) um estado comum, a ordem de execução não é definida até C++17
.