C #: порядок оценки функции (против C)

Возьмите следующий код C (K&R pg. 77) :

push(pop() - pop()); /* WRONG */

Книга говорит, что с- а также/ не являются коммутативными операторами, порядок, в котором 2pop оценивать функции необходимо (очевидно, чтобы получить правильный результат) ... и, таким образом, вы должны сначала поместить результат первой функции в переменную, а затем продолжить арифметику, например:

op2 = pop();
push(op2 - pop());

Очевидно, это связано с тем, что компилятор не может гарантировать, в каком порядке будут оцениваться функции (... почему?)

Мой вопрос, делает ли C # то же самое? как, я должен беспокоиться о такого рода вещи при работе с C #? и в этом отношении любой другой язык более высокого уровня?

Ответы на вопрос(8)

Ваш ответ на вопрос