Nachdem ich diese Antwort über undefiniertes Verhalten und Sequenzpunkte gelesen hatte , schrieb ich ein kleines Programm:
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
Die Ausgabe ist 2
. Oh Gott, ich habe das Dekrement nicht kommen sehen! Was passiert hier?
Außerdem habe ich beim Kompilieren des obigen Codes eine Warnung erhalten, die besagt:
px.c: 5: 8: Warnung: Der linke Operand des Kommaausdrucks hat keine Auswirkung
[-Wunused-value] i = (i, ++i, 1) + 1; ^
Warum? Aber wahrscheinlich wird es automatisch durch die Antwort auf meine erste Frage beantwortet.
printf("2\n");