Zuweisung und Rechenoperationen

Hallo ihr lieben,

ich hoffe, ihr könnt mir helfen! :slight_smile:

Die Aufgabe lautet:

int x = 1; int y = ++x, z = x++;

System.out.println (x + " " + y + " " + z);

Jetzt kommt als Ergebnis raus: 3 2 2

1.Frage: Wieso gibt es nun „zwei-Formen“ vom inkrementieren (ein mal wo +±links ist) und einmal (+±rechts). Sonst habe ich es nur auf der rechten Seite benutzt also z.B. a++ . Wo ist der Unterschied falls es einen gibt?

  1. Wieso ist int x als Ergebnis 3? x ist doch mit 1 initialisiert!? Bei den Variablen y und z würde ich es ja noch irgendwie nachvollziehen können - dass durch das inkrementieren der Wert von x übernommen-und um eins jeweils erhöht wird und bei den entsprechenden Variablen (y und z) gespeichert werden. Aber warum ist zugleich auch x davon betroffen?

LG, Sina

y = ++x;

bedeutet ausgeschrieben das hier:

x = x+1;
y = x;

z = x++;

bedeutet ausgeschrieben das hier:

z = x;
x = x+1;

Wenn du jetzt auf deine Ausgabe schaust, sollte dir hoffentlich klar werden warum
x = 3
y = 2
z = 2
:wink:

Hi :wink:

poste deine Frage doch nicht in jedem Forum…

Also, x wird bei jeder Zuweisung um 1 erhöht, also 1, 2, 3; die Frage ist, wann dies geschieht. Bei ++x wird x zuerst erhöht und dann gelesen. Bei x++ wird x zuerst gelesen und dann erhöht. Die Ausgabe ist dann also 3 2 2.

@Landei hatte eine ähnliche Frage mal im Quiz: Java Quiz . Du solltest aber nicht den kompletten Thread lesen, sonst Kopfweh. :wink:

lg