ungültiger L-wert - warum?
-
Hallo,
ich verstehe nicht warum das geht:
int f = --(d=3)+3; std::cout << f << std::endl;aber das nicht
int f = --((d=3)+3); std::cout << f << std::endl;Kann mir hier jemand genau erklären warum? Auch im Sinne von L-value?
Danke
-
Weil prvalues von built-in types unveränderlich sind.
-
Das was vor Pis Antwort gehört ist wohl: Weil der Ausruck <bezeichner + 3> wo bezeichner vom Typ int ist ein prvalue ist, <bezeichner = 3> aber nicht.
-
"--" erwartet eine Variable die geändert wird. Bei deinem ersten Ansatz wird d auf 3 gesetzt und dann der decrement Operator darauf angewendet. Bei dem zweiten Ansatz wird der Ausdruck in der Klammer schon ausgewertet, dort ist also nur noch eine Zahl vor - keine Variable. Und darauf kannst du den decrement Operator nicht anwenden.