Инкрементная логика

Я пытаюсь глубже разобраться с post и pre инкрементами, но немного застрял со следующим выражением:

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
}

Я знаю, что где-то не хватает логики, но где?

Что я пробовал:

Идя слева направо (хотя я знаю, что это не рекомендуется)Идя изнутри кронштейна и начиная оттуда.

Спасибо за помощь

PS: комментарии являются деталями моего исчисления

РЕДАКТИРОВАТЬ 1

Я пытался изменить де жестко закодированное значение из выражения2 к чему-то другому, и результат всегда дает0

Посмотрите на этот пример:

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

Это выражение не должно быть логически0 но так или иначе это печатает это.

То же самое происходит, когда я использую негатив:

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

РЕДАКТИРОВАТЬ 2

Теперь я изменил значениеi начать с :

    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

Это дает двойнуюi каждый раз, каким бы ни было жестко закодированное значение.

Ответы на вопрос(7)

Ваш ответ на вопрос