# Problem: Berechnung in Java



## Info.2000 (31. Okt 2015)

Liebes Forum,

leider hänge ich gerade bei einer Aufgabe und komme nicht so recht auf die richtige Lösung.

Man soll folgenden Ausdruck berechnen:

Die folgenden Werte sind für die Variablen als Ausgangssituation gespeichert:

x= 2
y = 10
z = 80

z = (x= (y+ (x= ++y)- --z*x++) +42)

Wenn ich das mit Java berechne komme ich auf -806 als Wert für den gesamten Ausdruck und für die Variablen auf: x= -806, y=11 und z=-806

Wenn ich es aber mit der Hand rechne komme ich auf diese Werte:
Ergebnis = -805
x und y= -805
z= 11

Was stimmt nun?

Ich hoffe, hier kann mir jemand weiterhelfen!

Viele Grüße
Info.2000


----------



## Info.2000 (31. Okt 2015)

Eine Anmerkung:
Händisch habe ich diese Ergebnisse berechnet:
Wert = -805
x und z = -805
y = 11


----------



## Crystalskull (31. Okt 2015)

Hallo Info.2000,

hierbei musst du auf die Priorität der Operatoren achten.
Die Runden Klammern haben die höchste Priorität (Prio 15), somit wird die innerste Klammer zuerst ausgewertet. x ist nach der Anweisung (x= ++y) gleich 11, der Präfix-Notation verwendet wird. x und y sind also 11. 

--z*x++ ist der schwierigste Teil. Zuerst wird z dekrementiert und x erst nach der Multiplikaton inkrementiert.
Also: 79*11=869
dann inkrementieren => x = 870
x= (11+11-870) => x = -848  => -848 + 42 = -806

Ich hoffe, ich konnte dir weiter helfen.

Viele Grüße

Crystalskull


----------



## Info.2000 (1. Nov 2015)

Vielen lieben Dank!
Du hast mir wirklich sehr weitergeholfen!


----------

