Test (c/CPP)Warum sind mehrere Inkremente/Dekremente in C++, aber nicht in C gültig?
#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;
}
Wenn ich die oben als CPP-Datei zu speichern, kompiliert es und gibt diese bei der Ausführung.
a = 0, b = 0
a = 0, b = 1
Allerdings, wenn ich es speichern als C-Datei, bekomme ich folgende Fehlermeldung:
test.c:7:12: error: lvalue required as decrement operator.
Sollte nicht der (++a)
Betrieb vor dengelöst werdenBetrieb? Hat jemand dazu einen Einblick?
'b = (++ a) -;' <- ist das nicht ** undefiniertes Verhalten **? – LihO
@LihO: Warum? Das Inkrement von 'a' wird vor der Auswertung sequenziert. –
Warum nicht einfach 'b = a + 1'? –