Меня немного смущает то, как компилятор 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
. Может ли кто-нибудь объяснить, почему это так?