Я немного запутался в том, как компилятор С# обрабатывает до и после приращений и декрементов.
Когда я закодирую следующее:
int x = 4;
x = x++ + ++x;
 x будет иметь значение 10 после этого. Я думаю, это связано с тем, что pre-increment устанавливает x в 5, что делает его 5+5 равным 10. Затем пост-инкремент будет обновлять x до 6, но это значение не будет использоваться, потому что тогда 10 будет присвоено x.
Но когда я код:
int x = 4;
x = x-- - --x;
 тогда x будет 2. Может ли кто-нибудь объяснить, почему это так?