Инкрементная логика
Я пытаюсь глубже разобраться с 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
каждый раз, каким бы ни было жестко закодированное значение.