Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Dobrý deň,
viete mi vysvetliť prečo tieto dva kódy vracajú dva rôzne výsledky:
#include <iostream> void PrintSum(int a, int b) { std::cout << a << " + " << b << " = " << (a + b) << std::endl; }
Teraz tie dva kódy:
1)
int value = 0; int temp1 = value++; int temp2 = value++; PrintSum(temp1, temp2);
vracia: 0 + 1 = 1
2)
value = 0; PrintSum(value++, value++);
vracia: 1 + 0 = 1
Ďakujem.
Offline
Protože nikde není řečeno v jakém pořadí se mají argumenty funkce vyhodnocovat. Je dokonce obvyklé, když je případě 2) vyhodnocuje odzadu. Při překladu takhle "vyjde" rozklad do stromu a nikoho to ani nenapadne třídit, když je to nedefinované.
Offline