Java: префиксы, префиксы операторов

У меня есть два похожих вопроса о приоритетах операторов в Java.

Первый:

int X = 10;
System.out.println(X++ * ++X * X++); //it prints 1440 

Согласно сУчебник Oracle:
Операторы postfix (expr ++, expr--) имеют более высокий приоритет, чем префиксные (++ expr, --expr)

Итак, я полагаю, что порядок оценки:

1) first postfix operator: X++ 
   1.a) X++ "replaced" by 10
   1.b) X incremented by one: 10+1=11
   At this step it should look like:  System.out.println(10 * ++X * X++), X = 11;

2) second POSTfix operator: X++ 
   2.a) X++ "replaced" by 11
   2.b) X incremented by one: 11+1=12
   At this step it should look like:  System.out.println(10 * ++X * 11), X = 12;

3) prefix operator: ++X
   3.a) X incremented by one: 12+1=13
   3.b) ++X "replaced" by 13
   At this step it should look like:  System.out.println(10 * 13 * 11), X = 13;

4) evaluating 10*13 = 130, 130*11 = 1430.

Но Java, похоже, игнорирует порядок PRE / POST и ставит их на один уровень. Итак, настоящий порядок:

 X++ -> ++X -> X++ 

что вызывает ответ будет (10 * 12 * 12) = 1440.

Второй:

Пример из этого вопроса:

    int a=1, b=2;             
    a = b + a++;

Часть принятого ответа: «К моменту назначения,++ уже увеличил значениеa в2 (из-за приоритета), так= перезаписывает это увеличенное значение. "

Хорошо, давайте посмотрим шаг за шагом:

 1) replacing "b" with 2
 2) replacing "a++" with 1
 3) incrementing "a" by 1 -> at this point a==2
 4) evaluating 2+1 = 3
 5) overwriting incremented value of "a" with 3

Кажется, все в порядке. Но давайте сделаем небольшое изменение в этом коде (замените "=" на "+ =")

    a += b + a++;

шаги 1-4 должны быть такими же, как указано выше. Итак, после шага 4 мы имеем что-то вроде этого:

    a += 3;

гдеa==2

И тогда я думаю: хорошо,a = 2+3, такa должно быть5, НО ответ только4

Я действительно смущен. Я уже провел пару часов, но до сих пор не могу понять, где я не прав.

Постскриптум Я знаю, что я не должен использовать этот «стиль» в реальных приложениях. Я просто хочу понять, что не так в моих мыслях.

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

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