Здравствуйте, blind_petrik, Вы писали:
L>>Вот поэтому и не надо так писать.
_>Это и так понятно. Писать так не собираюсь.
_>Но все равно. Мне хочется понять почему получается так как получается. Интересно мне
Ща попробую как я это понимаю. Если что, более опытные товарищи поправят.
1 случай:
i += ++i;
эквивалентно
i = i + (++i);
Начинаем вычислять "i + (++i)" учитывая что i = 1.
1 шаг: заместо 1-го i ставим 1.
Получаем 1 + (++ i), при этом все так же i = 1.
2 шаг: вычисляем ++i. Значение выражение равно 2, кроме того переменная i становится равной 2.
Получаем 1 + 2, при этом i = 2.
Итог:
i = 3;
2 случай:
i += i++;
эквивалентно
i = i + (i++);
Начинаем вычислять "i + (i++)" учитывая что i = 1.
1 шаг: заместо 1-го i ставим 1.
Получаем 1 + (i++), при этом все так же i = 1.
2 шаг: вычисляем i++. Значение выражение равно 1, кроме того переменная i становится равной 2.
Получаем 1 + 1, при этом i = 2.
Итог:
i = 2;
... << RSDN@Home 1.2.0 alpha rev. 786>>