Vysvětlení vzorce s urnárním operátorem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vysvětlení vzorce s urnárním operátorem – C / C++ – Fórum – Programujte.comVysvětlení vzorce s urnárním operátorem – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Spuštěný nový filmový web Filmožrouti.cz — vše o Avengers, Pacific Rim, Thor, Star Wars…
nikola180
Newbie
19. 10. 2018   #1
-
0
-

čau,

mám otázku.

v jakém pořadí a jak se provádí výpočet u takovéhodle vzorce?zkrátka jak se to vyhodnocuje?..podle knižky to prostě nechápu. chápu  že ++a se přičte 1 před použitím , a a++ po použití. ale u takovýhohle vzorce nevím jak k tomu počitač dojde.

int a = 2, c=1, e = 4;

a++ / ++c * --e

výsledek je 3.

jestli by mi to prosímvás dokázal někdo popsat.

díky

Nahlásit jako SPAM
IP: 185.148.174.–
Panda380
Newbie
19. 10. 2018   #2
-
+1
-
Zajímavé

1) a++ vezme z proměnné 'a' hodnotu 2 a potom proměnnou inkrementuje (=zvýší její obsah o 1)

2) ++c nejdříve proměnnou 'c' inkrementuje (=zvýší její obsah o 1) a pak z ní načte hodnotu, tj. tady 2

3) --e nejdříve proměnnou 'e' dekrementuje (=sníží její obsah o 1) a pak z ní načte hodnotu, tj. tady 3

Tedy výpočet bude 2 / 2 * 3 = 3

Nahlásit jako SPAM
IP: 95.129.243.–
nikola180
Newbie
19. 10. 2018   #3
-
0
-

#2 Panda38
díky. teprve teď když vidím ten vzorec s tím popisem to už chápu líp.

takže jedinou tu proměnou "a" vlastně nezvýší(inkrementace až po tom co ji použije ve vzorci poprvé)(konkrétně u tohoto příkladu).takže pokud by byl tenhle vzorec zařazen do nějaké opakující se podmínky ,tak by se to "a" zvýšilo o 1 až napodruhé. jestli to chápu úplně.?

Nahlásit jako SPAM
IP: 185.148.174.–
KIIV
~ Moderátor
+43
God of flame
19. 10. 2018   #4
-
+1
-
Zajímavé

#3 nikola18
Podle toho, jestli ++ pouzijes pred nebo za, se rozlisuje takzvana  pre-inkrementace a post-inkrementace. Je to takove "vizualni" znazorneni, ze se pripocteni 1 provede pred tim, nez se ziska hodnota, nebo az pote, co se ziska hodnota.

Kazdopadne neni moc dobry napad pouzivat cokoliv, co zpusobuje "side effect" ve vzorcich (meni hodnotu pouzite promenne). Tady je nastesti kazda promenna pouzita jen jednou, ale pokud by se pouzilo neco jako  a++ * ++a, tak je to z hlediska C++ nedefinovane chovani a vysledek muze byt na kazdem prekladaci jiny. To same ve volani funkce(a, ++a). Ostatne poradi vyhodnocovani parametru je taktez nespecifikovane a ruzne prekladace to maji ruzne (mozna to uz resi nejaky z novejsich c++ standardu?).

Nahlásit jako SPAM
IP: 185.163.40.–
Program vždy dělá to co naprogramujete, ne to co chcete...
nikola180
Newbie
19. 10. 2018   #5
-
0
-

 takže držet se ve vzorcích spíše matematických.

teda pro výpočty čehokoliv.jsem začátečník v C takže tyhle niance zatím neznám.učím se tak tejden..

díky za tip

Nahlásit jako SPAM
IP: 78.156.137.–
Panda380
Newbie
19. 10. 2018   #6
-
+1
-
Zajímavé

Jednoduché vzorce (jako posloupnost * a /) by se sice měly počítat vždy zleva doprava, ale jo raději to do výrazů moc nemíchat když se neví jistě. Úplný průšvih je inkrementace ukazatelů, jako např. *s++ = *s+1.  MS VC vyhodnocuje nejdříve pravou stranu, zatímco GCC nejdříve levou, tak se výsledky liší.

Nahlásit jako SPAM
IP: 95.129.243.–
Zjistit počet nových příspěvků

Přidej příspěvek

×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, 52 hostů

Podobná vlákna

Photoshop CS - vzorce — založil eMan

Vzorce xls -> Java — založil OndraZ

Moderátoři diskuze

 

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