Matematické Fórum

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

#1 21. 02. 2025 19:28

fmfiain
Příspěvky: 734
Reputace:   -1 
 

inkrement c++

Dobrý deň,
viete mi vysvetliť prečo tieto dva kódy vracajú dva rôzne výsledky:

Code:

#include <iostream>

void PrintSum(int a, int b)
{
    std::cout << a << " + " << b << " = " << (a + b) << std::endl;
}

Teraz tie dva kódy:
1)

Code:

int value = 0;
int temp1 = value++;
int temp2 = value++;
PrintSum(temp1, temp2);

vracia: 0 + 1 = 1

2)

Code:

 value = 0;
 PrintSum(value++, value++);

vracia: 1 + 0 = 1

Ďakujem.

Offline

 

#2 21. 02. 2025 21:52

Aleš13
Příspěvky: 378
Reputace:   
 

Re: inkrement c++

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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson