Incrementor logic

Ich versuche, mit Post- und Pre-Inkrementoren tiefer zu gehen, bin aber ein bisschen mit dem folgenden Ausdruck festgefahren:

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 vermisse die Logik irgendwo, aber wo?

Was ich versucht habe:

Gehen von links nach rechts (obwohl ich weiß, dass es nicht empfohlen wird)Gehen Sie von der verstecktesten Klammer aus und starten Sie von dort aus.

Danke für die Hilf

PS: Die Kommentare sind die Details meines Kalküls

EDIT 1

Ich habe versucht, den fest codierten Wert aus dem Ausdruck von @ zu änder2 zu etwas anderem und das Ergebnis gibt immer0

Sehen Sie sich dieses Beispiel an:

    int i = 0;
    i = i+=(++i + (i+=32500 + --i) - ++i);
    System.out.println(i); // Prints 0

Dieser Ausdruck sollte logischerweise bei weitem nicht in der Nähe von @ sei0 aber irgendwie druckt es es aus.

Das gleiche passiert, wenn ich ein Negativ benutze:

    int i = 0;
    i = i+=(++i + (i+=(-32650) + --i) - ++i);
    System.out.println(i); // Prints 0

EDIT 2

Now, ich habe den Wert von @ geändei zunächst

    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

s gibt das Doppelte voni jedes Mal, unabhängig vom fest codierten Wert.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage