¿Cómo funciona el operador de coma en C ++?
Por ejemplo, si lo hago:
a = b, c;
¿A termina igualando b o c?
(Sí, sé que esto es fácil de probar, solo documente aquí para que alguien encuentre la respuesta rápidamente).
Actualización: esta pregunta ha expuesto un matiz al usar el operador de coma. Solo para documentar esto:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
Esta pregunta en realidad fue inspirada por un error tipográfico en el código. Lo que estaba destinado a ser
a = b;
c = d;
Convertido en
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
realmente funciona igual que lo previsto a = b; c = d;
?
b
y d
son evaluaciones de funciones que usan (y modifican) un estado común, el orden de ejecución no se define hasta C++17
.