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
Fórum › C / C++
Postranne efekty
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...
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Sleduj mě na twitteru – @lukaschury.
myslim, ze je to vysvetlene dobre. uz jsem se chystal, ze mu taky odpovim nejak tak, ale ty si c++ master :P
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.
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žení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
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