Jaki jest wynik + = w C i C ++?

Mam następujący kod:

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

Jeśli spróbuję skompilować go jako źródło C za pomocą gcc, pojawia się błąd:

error: lvalue required as left operand of assignment

Ale jeśli skompiluję go jako źródło C ++ za pomocą g ++, nie otrzymam żadnego błędu i kiedy uruchomię plik wykonywalny:

i = 20

Dlaczego różne zachowania?

questionAnswers(2)

yourAnswerToTheQuestion