Después de leer esta respuesta sobre el comportamiento indefinido y los puntos de secuencia, escribí un pequeño programa:
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
La salida es 2
. ¡Oh Dios, no vi venir el decremento! ¿Que está sucediendo aquí?
Además, mientras compilaba el código anterior, recibí una advertencia que decía:
px.c: 5: 8: advertencia: el operando de la izquierda de la expresión de coma no tiene efecto
[-Wunused-value] i = (i, ++i, 1) + 1; ^
¿Por qué? Pero probablemente será respondido automáticamente por la respuesta de mi primera pregunta.
printf("2\n");