Есть код:
int i = 1;
i = i++ + (( i > 2 )? i++: (i++ * i++)) + i++ ;
System.out.println(i);
на выход получаем 11. Почему? Никак не могу понять.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
парсим это выражение
1) первое слагаемое (i++) кладется в ячейку. Положили «1», переменная i увеличивается, i=2
2) идет сравнение (i > 2). Результат — false. Значит берем второй блок.
3) вычисляем второе слагаемое. (i++ * i++)) Не буду расписывать, но общее правило — сперва в ячейку кладется текущее значение i а потом оно инкрементируется. Результат выглядит так: (2 * 3) = 6. Итог — второе слагаемое 6. В конце операции i = 4;
4) третье слагаемое простое. i++. оно равно 4, после вычисления i = 5;
5) финальное суммирование. i = 1 + 6 + 4 = 11
www.coderanch.com/t/408774/java/java/explain
++i + ++i + ++i in Java vs C