Ich bin heute auf ein ähnliches Konstrukt gestossen wie das folgende.
Ich finde das extrem gefährlich, vor allem weil es in einem recht komplexen Ausdruck ist, x eine Klassenvariable ist und in einer Unterfunktion verändert wird.
Ist streng definiert in welcher Reihenfolge die Terme berechnet werden?
Ich bin nicht wirklich fündig geworden, aber beim Suchen noch auf einen herrlichen Ausdruck gestossen:
Betrachten wir das flogende als kleines Rätsel
- da brauch ich nicht keine Antworten, denn ich würde so etwas niemals ausnutzen ;-)
Warum gibt Zeile 3 einen Kompilationsfehler. Zeile 4 ist nämlich ok
Das verstehe ich aber wirklich nicht. Die letzte Zeile (und nur die letzte) ist falsch.
Ja ich weiss, es ist sinnlos, aber es könnten ja auch "-" sein, dann mach -x Sinn ;-)
Java:
x = 1;
z = (x++)+x;
System.out.println("z = " + z);
// Resultat 3
x = 1;
z = x+(x++);
System.out.println("z = " + z);
// Resultat 2
Ich finde das extrem gefährlich, vor allem weil es in einem recht komplexen Ausdruck ist, x eine Klassenvariable ist und in einer Unterfunktion verändert wird.
Ist streng definiert in welcher Reihenfolge die Terme berechnet werden?
Ich bin nicht wirklich fündig geworden, aber beim Suchen noch auf einen herrlichen Ausdruck gestossen:
Betrachten wir das flogende als kleines Rätsel
Java:
int x = 1;
int y = 2;
x = x+++y;
// Was ist das Resultat?
Java:
int x = 1;
int y = 2;
x = (x++)+y;
// Was ist das Resultat?
Java:
int x = 1;
int y = 2;
x = x+(++y);
// Was ist das Resultat?
Warum gibt Zeile 3 einen Kompilationsfehler. Zeile 4 ist nämlich ok
Java:
int x = 1;
int y = 2;
x = x+++++y;
z = x++-++y;
Das verstehe ich aber wirklich nicht. Die letzte Zeile (und nur die letzte) ist falsch.
Ja ich weiss, es ist sinnlos, aber es könnten ja auch "-" sein, dann mach -x Sinn ;-)
Java:
int x = +3;
int y = +x;
y = ++x;
y = +(++x);
y = ++(+x);