Re[3]: вопрос по операциям сложения в С#
От: Lloyd Россия  
Дата: 10.01.08 17:32
Оценка: +1
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.