Problem: Berechnung in Java

Info.2000

Mitglied
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
 

Crystalskull

Mitglied
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
 

Neue Themen


Oben