Sztuczki i haczyki II
2008-06-09 | by muczachan |Poprzednio było o konieczności uważania na optymalizację, dzisiaj o kolejności wykonywania działań. Notacja skrócona, ale tym razem chyba jasna. ‘x’ jest globalne.
F() = x++; return 
G() = x++; return 
H() = x++; return 
Jaki będzie wynik x=1; return F() * (G() + H())? Bez jakiejkolwiek optymalizacji, tym haczykiem proszę się nie przejmować.
a) w C/C++;
b) Java
c) C#.
Zadanie dodatkowe: co kompilator z czymś takim zazwyczaj robi?
Zadanie z gwiazdką: kiedy a+(b+c) będzie różne od (a+b)+c?
3 Responses to “Sztuczki i haczyki II”
By bif on 2008-06-10 | Reply
no nic, juz to obgadalem, ale napisze dla potomnosci
mylilem sie sadzac, ze C bedzie ewaluowac funkcje po kolei od lewej do prawej
znaczy tak wlasnie robia znane mi kompilatory, ale nie jest to gwarantowane przez standard, w odroznieniu do Javy i C#.
z gwiazdka: overflowy jakies? dodawanie signed i unsigned?
By komutator on 2008-10-11 | Reply
W kwestii gwiazdki – Jak się przeciąży operator, to różne zabawne rzeczy mogą wyjść.
By Tener on 2008-11-02 | Reply
(a+b)+c != a+(b+c) : Chyba najczęstszy przypadek występuje dla odpowiednich liczb zmiennoprzecinkowych a,b,c.