C #: порядок оценки функции (против C)
Возьмите следующий код C (K&R pg. 77) :
push(pop() - pop()); /* WRONG */
Книга говорит, что с-
а также/
не являются коммутативными операторами, порядок, в котором 2pop
оценивать функции необходимо (очевидно, чтобы получить правильный результат) ... и, таким образом, вы должны сначала поместить результат первой функции в переменную, а затем продолжить арифметику, например:
op2 = pop();
push(op2 - pop());
Очевидно, это связано с тем, что компилятор не может гарантировать, в каком порядке будут оцениваться функции (... почему?)
Мой вопрос, делает ли C # то же самое? как, я должен беспокоиться о такого рода вещи при работе с C #? и в этом отношении любой другой язык более высокого уровня?