Postranne efekty – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Postranne efekty – C / C++ – Fórum – Programujte.comPostranne efekty – C / C++ – Fórum – Programujte.com

 

romAN0
Duch
21. 2. 2006   #1
-
0
-

int i=2;
i + ++i;


P??klad demonstruje nebezpe?nost podobn?ch z?pis?. P?ed vyhodnocen?m cel?ho v?razu m? prom?nn? i hodnotu 2. Bohu?el ale nev?me, kter? z operand? oper?toru + bude vyhodnocen d??ve. Bude-li to lev? operand, bude m?t cel? v?raz hodnotu 5. Pokud v?ak bude jako prvn? vyhodnocen prav? operand, bude hodnotou v?razu ??slo 6. Proto je dobr? takov?to v?razy nepou??vat a rad?i je rozepsat do v?ce krok? tak, aby na jednu prom?nnou byl aplikov?n v?dy maxim?ln? jeden oper?tor s postrann?m efektem.

som laik ale rad by som tomu porozumel ak by mal niekto zaujem mi to vysvetlit bol by som vam vdacny dik

Nahlásit jako SPAM
IP: ...–
Lukáš Churý
~ Šéfredaktor
+8
Hero
21. 2. 2006   #2
-
0
-

No, ptz u kodu



i + ++i;

nen? jist?, co z toho se provede jako prvn?, tedy zda se provede (pokud m? [i]i[/i] hodnotu 2):


2 + 3;

nebo


3 + 3;

A pro?? Po?ad? nen? v takov?m p??pad? definovan?, proto bychom se m?li takov?ch z?pis? a pota?mo p??pad? vyvarovat.
P??kaz


i++

inkrementuje hodnotu [i]i[/i] (=zv?t?? ji o jedna)
A my nev?me, zda se prvn? hodnota [i]i[/i] zv?t?? o jedna a a? pak se se?te


3 + 3 = 6?

nebo zda se provede prvn? s??t?n? (spolu se zv?t?en?m) -> zleva doprava:


2 + 3 = 5;

U tohoto p??padu m? toti? [i]i[/i] hodntu 2 p?ed proveden?m sou?tu.. tak?e se vezme hodnota [i]i[/i], co? je 2 pak se se?te s [i]++i[/i], co? je 3. (n?sledn? hodnota i je p?i vol?n? ji? 3).

Proto, pokud by bylo po?ad? zprava doleva, nejd??ve by se hodnota [i]i[/i] zv?t?ila o 1 na 3 a a? pak se?etla s [i]i[/i], co? u? by bylo taky 3...

Douf?m, ?e jsem to n?jak vysv?tlil...

Nahlásit jako SPAM
IP: ...–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Zden?k Lehock?
~ Šéfkorektor
+2
Grafoman
22. 2. 2006   #3
-
0
-

myslim, ze je to vysvetlene dobre. uz jsem se chystal, ze mu taky odpovim nejak tak, ale ty si c++ master :P

Nahlásit jako SPAM
IP: ...–
* Šéfkorektor *
romAN0
Duch
23. 2. 2006   #4
-
0
-

vdaka uz tomu rozumiem

Nahlásit jako SPAM
IP: ...–
14. 9. 2006   #5
-
0
-

Vidim že už to někdo vysvětlil, chci jenom dodat, že i + ++i se vyhodnotí jako
i + (i+1). To je Prefix. Prefix se vyhodnocuje tak že nejdřív se i zvýší o jedna ( i++) a pak teprve se přičte k i. Kdyby to bylo i + i++ bylo by to celé jinak. To by byl Postfix. asi takto (i + i) a teprve potom by se přičetlo k i 1.

Nahlásit jako SPAM
IP: ...–
char zz = 167; cout << "Jak jde " << zz << "ivot?\n";
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 72 hostů

Podobná vlákna

Svetelne efekty — založil devilfish

Výpis a efekty v JS — založil spartan13

Efekty písma a objektů — založil Tomáš

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý