Après avoir lu cette réponse sur le comportement indéfini et les points de séquence, j'ai écrit un petit programme:
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
La sortie est 2
. Oh mon Dieu, je n'ai pas vu venir le décrément! Que se passe-t-il ici?
De plus, lors de la compilation du code ci-dessus, j'ai reçu un avertissement disant:
px.c: 5: 8: avertissement: l'opérande gauche de l'expression virgule n'a aucun effet
[-Wunused-value] i = (i, ++i, 1) + 1; ^
Pourquoi? Mais il sera probablement répondu automatiquement par la réponse à ma première question.
printf("2\n");