Пре- и пост-инкремент в C #

Меня немного смущает то, как компилятор C # обрабатывает пре- и пост-инкременты и декременты.

Когда я кодирую следующее:

int x = 4;
x = x++ + ++x;

x впоследствии будет иметь значение 10. Я думаю, это потому, что предварительный инкремент устанавливает x в 5 , что делает его 5 + 5 , который оценивается как 10 . Затем постинкремент обновит x до 6 , но это значение не будет использоваться, потому что тогда 10 будет присвоено x .

Но когда я кодирую:

int x = 4;
x = x-- - --x;

, тогда x впоследствии будет 2 . Может ли кто-нибудь объяснить, почему это так?

61
задан ivan_pozdeev 21 August 2018 в 12:19
поделиться