Was ist das Ergebnis von + = in C und C ++?

Ich habe folgenden Code:

#include <stdio.h>
int main(int argc, char **argv) {
    int i = 0;
    (i+=10)+=10;
    printf("i = %d\n", i);
    return 0;
}

Wenn ich versuche, es mit gcc als C-Quelle zu kompilieren, erhalte ich eine Fehlermeldung:

error: lvalue required as left operand of assignment

Aber wenn ich es als C ++ - Quelle mit g ++ kompiliere, erhalte ich keine Fehlermeldung und wenn ich die ausführbare Datei starte:

i = 20

Warum das andere Verhalten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage