while
Schleife geprüft wird, genauer analysieren. Zuerst sehen wir, dass in jeder Iteration x dekrementiert
wird, sofern x > 0
gilt. Da der Post-Dekrement Operator verwendet wird, evaluiert der Ausdruck x--
zu dem
aktuellen Wert (bevor x dekrementiert wird) von x. Somit gilt nach zwei Iterationen der Zustand x == 1
. Wenn
nun die Bedingung erneut geprüft wird, evaluiert 0 < x--
noch immer zu true
(da x == 1
gilt und der Post-Dekrement
Operator zum Wert von x evaluiert, bevor x dekrementiert wird). Allerdings gilt nach der Evaluierung x == 0
.
Wenn nun erneut die Bedingung geprüft wird, ist die erste Bedingung x == 0
wahr. Somit wird die zweite Bedingung aufgrund der Kurzschlussauswertung
nicht überprüft und x bleibt konstant 0. Somit wird auch in jeder folgenden Iteration die Bedingung x == 0
wahr sein, da der Wert von x nicht mehr
verändert wird.
x++
) und "unary pre-increment" (also ++x
)
höher ist als die Precedence von dem Operator +
(Addition). Da in Java Operanden von Operatoren von links nach rechts evaluiert werden, wird
zuerst x++
evaluiert. Dieser Ausdruck evaluiert zu dem alten Wert von x (also x == 2
). Allerdings wird x um 1 erhöht. Somit
gilt nach der Evaluierung von x++
folgendes: x == 3
. Wenn nun ++x
ausgewertet wird, gilt nach der Auswertung x == 4
.
Da bei "unary pre-increment" der Ausdruck zum neuen Wert (in dem Fall x == 4
) ausgewertet wird, ist unser komplette Ausdruck x = 2 + 4
(nachdem die Operanden ausgewertet wurden).
Nun wird noch die Addition und das Assignment gemacht, was dazu führt das x == 6
am Schluss gilt.
x++
) höher ist als die Precedence von dem Operator +
(Addition).
Da in Java Operanden von Operatoren von links nach rechts evaluiert werden, wird zuerst x++
evaluiert. Dieser Ausdruck evaluiert zu dem alten Wert von x (also x == 2
).
Allerdings wird x um 1 erhöht. Somit gilt nach der Evaluierung von x++
folgendes: x == 3
. Wenn nun nochmals x++
ausgewertet wird, gilt nach der Auswertung x == 4
.
Allerdings gilt auch hier wieder, dass der Ausdruck x++
zu x == 3
ausgewertet wird. Der komplette Ausdruck nach der Auswertung der Operanden des +
Operator ist somit x = 2 + 3
.
Nun wird noch die Addition und das Assignment gemacht, was dazu führt das x == 5
am Schluss gilt.