Prázdná podmínka if(true)? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prázdná podmínka if(true)? – C / C++ – Fórum – Programujte.comPrázdná podmínka if(true)? – C / C++ – Fórum – Programujte.com

 

Jindra
~ Anonymní uživatel
19 příspěvků
19. 7. 2017   #1
-
0
-

Dobré odpoledne,

chtěl bych se zeptat na význam podmínky if (true). Já to chápu tak že je odpověď na podmínku true = podmínka se provede. Ale v tom případě by tam nemusela ani být, ne?

Mám program:

int main()

{

if (true)

{

Trida instance; // vypíše text "aaaa"

} // vypíše text "bbb"

}

A mám vytvořit třídu Trida, která vypíše příslušené texty. Do mainu zasahovat nesmím. Tedy jediná možnost jak něco vypsat je přes konstruktor a přes destruktor. Ale netuším jaký na to má vliv ta podmínka že se něco vypíše pokud je splněná (což je vždy??) a něco za ní??

Nahlásit jako SPAM
IP: 37.188.233.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 7. 2017   #2
-
0
-

Instance se inicializuje v místě definice a ruší na konci bloku, ve kterém je definovaná.

Někdy se takhle kód dává do bloku právě pro to omezení platnosti/viditelnosti. A aby tam ten blok jen tak nevisel, tak ještě třeba do toho ifu.

Jinak máš pravdu, takhle jak to je, to tam je k ničemu.

Nahlásit jako SPAM
IP: 213.211.51.–
KIIV
~ Moderátor
+43
God of flame
19. 7. 2017   #3
-
0
-

O co tu hlavne jde, je C++ paradigma RAII - Resource Aquisition Is Initialization. Zaberes nejaky zdroj (resource) v konstruktoru a uvolnis ho v destruktoru (nebo v tvem pripade vypises). If je tam opravdu zbytecny, je to asi jen aby ten vnitrni blok nevypadal tak moc "osamele". Nekdy se to pouzivalo jako "zakomentovani" nebo "odkomentovani" kusu kodu. Kompilator samozrejme pozna nedostupny kod a dokaze ho vynechat, a to same pozna, ze je ta podminka vzdy splnena a rovnou vykona co ma. Ale na omezeni rozsahu platnosti staci i samotny blok { }.

Casteji sem se spise setkal s  do { neco; } while(0)   jako misto samotneho bloku u definici maker. Je to jedina konstrukce, za kterou se muze napsat za makro strednik a nerozbije to kod jako if (neco) MAKRO(yyy); else ...  ->  if (neco) { yyy; }; else ...  je samozrejme blbost, ale  if (neco) do { yyy; } while(0); else ... je uz validni kod: https://stackoverflow.com/questions/257418/do-while-0-what-is-it-good-for

Nahlásit jako SPAM
IP: 78.45.227.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jindra
~ Anonymní uživatel
19 příspěvků
20. 7. 2017   #4
-
0
-

Aha, rozumím. Díky za informace.

Nahlásit jako SPAM
IP: 37.188.186.–
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, 71 hostů

Podobná vlákna

3vlákna while(true) — založil JIRKAS

Podmienka if nevracia true — založil Martin

Scanner - natsavení true hodnoty — založil allanwalker

Prazdna mezera — založil Jupijou

Prazdna premenna — založil normi

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ý