Ausdrücke berechnen

programmer13

Mitglied
Hallo zusammen,

Java:
public static void test()  {
int a = 6;
int b = 7;
int c = ++a - b--;
a = --c +  ++a;

Ergebnis: c ist 0 und a ist 7

Doch wie kommt man darauf? Ich verstehe die Minus- und Pluszeichen hinter und vor den Variablen nicht. Spielt es eine Rolle, ob sie vor oder hinter der Variablen stehen?
 
++ ist der Increment Operator. Und der Unterschied zwischen vor und nach der Variable ist die Reihenfolge, in der es ausgeführt wird. Bei ++x wird erst X erhöht und dann der restliche Ausdruck ausgewertet. Bei x++ wird erst der Ausdruck ausgewertet und dann x erhöht.

Also einfach mal ausprobieren:
Code:
int x = 0;
int y = ++x;
System.out.println("Y ist " + y);
int y = x++;
System.out.println("Y ist " + y);

Also wenn wir nun etwas auswerten wie c = ++a - b--; passiert folgendes:
1) ++a -> A wird also von 6 auf 7 erhöht.
2) a - b wird ausgerechnet und in c gespeichert: c = 7 - 7 = 0
3) b-- wird nun ausgerechnet. b ist damit dann 6.

Konrad
 
Ach so - nur als kleine Anmerkung: Solche Ausdrücke sind interessant als Prüfungsaufgaben um zu verstehen, ob jemand diese Java Grundlagen verstanden hat, aber im code haben solche Ausdrücke nichts verloren!
Code hat leserlich zu sein und daher hat man diese Operatoren innerhalb eines Ausdrucks nicht zu verwenden. Also ein x++; ist ok, aber bitte kein y = a + x++; oder so! Ganz schlimm wird es, wenn man eine Variable, auf die man den Inkrement Operator anwendet auf beiden Seiten der Zuweisung nutzt. Also sowas wie a=i++; Auf welches Element hier zugegriffen wird ist nicht definiert und damit compilerabhängig!

Es gilt bei der Softwareentwicklung Lesbaerer Code ist wichtiger als alles andere. Irgendwelche Zeilen Code einzusparen oder so ist Nebensache. Performance ist erst einmal nebensache - also keinerlei Optimierungen, die den Code unleserlicher machen. Und wenn die Performance nicht ausreicht: Dann gibt es eine Analyse, woran es liegt und keine blinden Optimierungen! http://www.cleancodedeveloper.de

Das nur als kleiner zusätzlicher Hinweis.
 

Zurück
Oben