Originaltext:
Beachten Sie bitte, dass Operationen und damit auch Ausdrücke
grundsätzlich einen Wert zurückliefern. Dies wird im letzen Beispiel deutlich:
die Operation b=0
liefert den Wert 0,
der dann für die zweite Operation (a=...) verwendet wird (die Assoziativität der
Zuweisungsoperatoren ist „links nach rechts“).
Korrekt muss es heißen:
Die Assoziativität der Zuweisungsoperatoren ist „rechts nach links“.
Originaltext:
Welche Auswirkungen hat die Operation a++ = b++
= 0? (a
und b
sollen Integer-Variablen sein).
Korrekt muss es heißen:
Welche Auswirkungen hat die Operation ++a = ++b = 0?
(a und b sollen Integer-Variablen
sein).
Anmerkung:
Die Version mit dem Postinkrement ist unzulässig, die Anweisung
ergibt einen Syntaxfehler bei der Übersetzung. Der Grund ist, dass der
Postincrement-Operator einen Wert (r-value)
liefert (nämlich den ursprünglichen Wert der Variablen vor der Incrementierung).
Einem Wert kann aber nichts zu gewiesen werden.
Anders verhält es sich mit dem PräIncrement-Operator. Er erhöht die
Variable und liefert eine Referenz darauf zurück. Dies ist ein l-value, dem etwas zu gewiesen werden
kann.