C #: Kolejność oceny funkcji (vs C)
Weź następujący kod C (K&R pg. 77):
push(pop() - pop()); /* WRONG */
Książka mówi o tym od tego czasu-
i/
nie są operatorami przemiennymi, kolejnością, w jakiej 2pop
funkcje są oceniane (oczywiście, aby uzyskać poprawny wynik) ... i dlatego najpierw musisz umieścić wynik pierwszej funkcji w zmiennej, a następnie kontynuować arytmetykę, taką jak:
op2 = pop();
push(op2 - pop());
Najwyraźniej dzieje się tak dlatego, że kompilator nie może zagwarantować, w jakiej kolejności oceniane są funkcje (... dlaczego?)
Moje pytanie brzmi, czy C # robi to samo? jak w, muszę się martwić o coś takiego podczas pracy z C #? i do tego każdy inny język wyższego poziomu?