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

Příklady BOOL – C / C++ – Fórum – Programujte.comPříklady BOOL – C / C++ – Fórum – Programujte.com

 

10. 8. 2012   #1
-
+1
-
Zajímavé

Zdravím, po delší době sem se konečně dostal k programování a nerozumím využití typu BOOL. Můžete mi prosím pro příklad uploadnout nějaký jednoduchý zdrojový kód s jeho využitím?

Děkuji.

Nahlásit jako SPAM
IP: 78.102.120.–
Atheo+4
Stálý člen
10. 8. 2012   #2
-
+1
-
Zajímavé

#1 Nadšenec
Nechce se mi to psat takze :

bool

Je standardní příkaz Céčka, který se píše před názvem nové proměnné a říká překladači, aby alokoval v paměti místo pro uložení jedné informace typu bool. Bool je speciální logická proměnné, která může nabývat pouze dvou stavů. PRAVDA-NEPRAVDA, jinak řečeno true-false nebo přímo logicky 1-0. Z této skutečnosti vyplívá, že pro uložení takové informace nám stačí pouze 1 bit. Záleží na překladači, zda spojí více (max 8) proměnných typu bool a bude je alokovat na jedné adrese (Byte). Zpravidla je bool alokován jako int, tedy zabírá jeden bajt, který je využit jen z jedné osminy. Pro false ukládá 0 a pro true ukládá 1.

Formát deklarace proměnné

bool stav;

Nastavuje proměnnou typu bool s jedinečným názvem stav pro programátora a překladač.

Co je důležité:

Překladač registruje název stav, který musí být jedinečný. Prezentuje pouze false nebo true.
Překladač bude aplikovat matematické vyjádření jako false=0, ostatní true;
Překladač pracuje s obsahem adresy prezentující bool, jako s int.
POZNÁMKA: překladač není správný pojem, neboť při spuštění kompilovaného programu je mimo hru

Specifika bool

Bool je z logického hlediska dvoustavový, jako pravda a nepravda. Jeho fyzické uchování se provádí na jedné adrese, která může představovat  256 rozdílných stavů. S výhodou lze této skutečnosti využít pro přenos doplňujících informací, jako např. číslo chyby při erroru apod. Logicky se hodnota rozdělí na nulovou a nenulové, kde platí jako false a true +např. 33.
Zvláštním případem je pak vytvoření (ne příliš vhodně řečeného) bitového řetězce či pole jako stavy[]. Jedná se opět jen o klasické pole prvků int, které respektují binární logiku jako nulové a nenulové hodnoty obsahů adres.

bool stav1;                              //alokuje 1 bit ale neinicializuje
bool stav2=false;         //alokuje 1 bit a inicializuje na 0
bool stavy[]={1,0,0,1,0,1};     //alokuje 6 bitů a inicializuje
cout<<stav1<<endl;                //náhodný stav (1 nebo 0)
cout<<stav2<<endl;                //vypíše 0, jako false
cout<<stavy[0]<<"_";              //1_
cout<<stavy[1]<<"_";              //0_
cout<<stavy[2]<<"_";              //0_
cout<<stavy[3]<<"_";              //1_
cout<<stavy[4]<<"_";              //0_
cout<<stavy[5]<<endl;            //1
getchar();                                 //čekání na entr
return 0;                                  //opuštění konzolové aplikace

Program deklaruje tři logické proměnné stav. PC ovšem alokuje tři adresy. Stav1 je pouze alokován, ale není přímo určen stav. PC určil nějakou adresu, která má z předchozích operací libovolnou hodnotu. S velkou pravděpodobností asi nenulovou. Cout by nám tak mohl vypsat true jako 1. Stav2 alokuje paměť a ještě je modifikuje na false. Fasle je jedinečná nulová hodnota, proto je na danou adresu zapsána hodnota 0. Ta je potom i vypsána pomocí cout. Proměnná stavy vytváří pole či řetězec logických stavů, ke kterým lze přistupovat pomocí indexů. Do cout vstupuje bool jako obsah adresy, který je nulový či nenuloví. Cout ví, že pro nulovou hodnotu obsahu adresy má generovat znak „0“ , pro vše ostatní znak „1“.

Zdroj  http://amapro.cz

Atheo

Nahlásit jako SPAM
IP: 188.175.140.–
vitamin+8
Grafoman
10. 8. 2012   #3
-
0
-

Typ BOOL sa pouziva hlavne vo winapi ktore je napisane v standarte ktory este nemal typ bool. Je to v podstate typedef na int.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Atheo+4
Stálý člen
11. 8. 2012   #4
-
0
-

#3 vitamin
Ale zase je BOOL a bool ;)

Nahlásit jako SPAM
IP: 188.175.140.–
ru_sniper2553698
~ Anonymní uživatel
1 příspěvek
11. 8. 2012   #5
-
0
-

#1 Nadšenec

Ahoj, bool je typ proměnné, může obsahovat 2 hodnoty "false" a "true". Použít se dá stejně jako indikační bit když potřebuješ někde přepnout stav.

např.:

 

bool neg = false; /* if there is '-' before number "-3", neg is set to True, if the number is above 0, it remains false. */

if(some_array[0]=='-') {neg = true;}

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

Podobná vlákna

Bool — založil Anonym

Sizeof bool — založil Porcepoque

Bool s 2D Polem — založil Mutagen

Sprintf formátování bool — založil hlucheucho

Bool, char, strlen — založil Avidius

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ý