Dlaczego wiele przyrostów / dekrementacji jest poprawnych w C ++, ale nie w C?
test. (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;
}
Jeśli zapiszę powyższe jako plik .cpp, kompiluje i wyświetla to po wykonaniu:
a = 0, b = 0
a = 0, b = 1
Jeśli jednak zapiszę go jako plik .c, pojawi się następujący błąd:
test.c:7:12: error: lvalue required as decrement operator.
Nie powinienem(++a)
operacja zostanie rozwiązana przed(newValue)--
operacja? Czy ktoś ma na to jakiś wgląd?