Por que múltiplos incrementos / decrementos são válidos em C ++, mas não em C?

teste (c / cpp)

#include <stdio.h>

int main(int argc, char** argv)
{
  int a = 0, b = 0;
  printf("a = %d, b = %d\n", a, b);
  b = (++a)--;
  printf("a = %d, b = %d\n", a, b);

  return 0;
}

Se eu salvar o arquivo acima como um arquivo .cpp, ele compilará e gerará isso após a execução:

a = 0, b = 0
a = 0, b = 1

No entanto, se eu salvá-lo como um arquivo .c, recebo o seguinte erro:

test.c:7:12: error: lvalue required as decrement operator.

Não deve o(++a) operação seja resolvida antes do(newValue)-- Operação? Alguém tem alguma ideia disso?

questionAnswers(4)

yourAnswerToTheQuestion