Каков результат + = в C и C ++?

Я получил следующий код:

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

Если я пытаюсь скомпилировать его как исходный код C, используя gcc, я получаю сообщение об ошибке:

error: lvalue required as left operand of assignment

Но если я скомпилирую его как исходный код C ++, используя g ++, я не получаю ошибки, и когда я запускаю исполняемый файл:

i = 20

Почему разное поведение?

Ответы на вопрос(2)

Ваш ответ на вопрос