Dopo aver letto questa risposta su comportamenti indefiniti e punti di sequenza, ho scritto un piccolo programma:
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
L'output è 2
. Oh Dio, non ho visto arrivare il declino! Cosa sta succedendo qui?
Inoltre, durante la compilazione del codice precedente, ho ricevuto un avviso che diceva:
px.c: 5: 8: avviso: l'operando di sinistra dell'espressione virgola non ha alcun effetto
[-Wunused-value] i = (i, ++i, 1) + 1; ^
Perché? Ma probabilmente riceverà automaticamente risposta dalla mia prima domanda.
printf("2\n");