Ich versuche, tiefer zu bekommen mit Post und Pre Inkrementoren ist aber ein bisschen mit dem folgenden Ausdruck fest:Inkrementierer Logik
public static void main(String[] args) {
int i = 0;
i = i+=(++i + (i+=2 + --i) - ++i);
// i = 0 + (++i + (i+=2 + --i) - ++i);
// i = 0 + (1 + (3 + 2) - 1);
// i = 0 + (6 - 1);
System.out.println(i); // Prints 0 instead of 5
}
Ich weiß, ich bin fehle die Logik irgendwo, aber wo?
Was ich versucht habe:
- von links nach rechts gehen (obwohl ich weiß es ist nicht zu empfehlen)
- vom insidest Klammer gehen und von dort aus starten.
Danke für die Hilfe
PS: Die Kommentare sind die Details meines Kalkül
EDIT 1
ich von 2
zu de hart codierten Wert aus dem Ausdruck zu ändern versucht, etwas anderes und das Ergebnis gibt immer 0
Schauen Sie sich dieses Beispiel an:
Dieser Ausdruck sollte logischerweise nicht in der Nähe von 0
sein, aber irgendwie wird es gedruckt.
Das gleiche passiert, wenn ich eine negative verwenden:
int i = 0;
i = i+=(++i + (i+=(-32650) + --i) - ++i);
System.out.println(i); // Prints 0
EDIT 2
Nun änderte ich den Wert von i
zu beginnen:
int i = 1;
i = i+=(++i + (i+=2 + --i) - ++i);
System.out.println(i); // Prints 2
i = 2;
i = i+=(++i + (i+=10000 + --i) - ++i);
System.out.println(i); // Prints 4
i = 3;
i = i+=(++i + (i+=(-32650) + --i) - ++i);
System.out.println(i); // Prints 6
Es gibt das Doppel von i
jedes Tim e, was auch immer der fest codierte Wert ist.
könnten Sie eleborate, warum Sie denken, Es ist '5' statt '0' – SomeJavaGuy
Die Kommentare im Code sind meine calculs –
Ahh Artikel nicht fangen, die – SomeJavaGuy