Knihovna stdbool.h
Standardy jazyka C
V době své největší slávy existoval standard jazyka C s označením c89. Tento standard neznal
booleovské
hodnoty a typy. Proto spousta funkcí, které vracejí informaci pravda/neprava, mají
definovanou návratovou hodnotu jako typ int, viz Boolovské datové typy.
Tím se nenechte zmást a při psaní vlastních funkcí raději používejte bool
.
Novější standard c99 zavedl knihovnu <stdbool.h>. Standard c99 toho zavedl nového více. Ne všechno z tohoto standardu už bylo překladači implementováno, ale podpora tohoto standardu je všeobecně na slušné úrovni.
Nejnovější standard jazyka C se nazývá C11. Novinky z tohoto standardu (z roku 2011!) nejsou ještě překladači moc podporovány (já se třeba těším na to, až bude většinou překladačů podporována knihovna <threads.h>, která umožňuje psát více vláknové aplikace).
Booleovské typy a hodnoty
Knihovna <stdbool.h> definuje nový datový typ _Bool
.
K němu definuje “alias“ v podobě makra bool
.
Doporučuji vám používat spíše toto makro, vypadá přeci jen lépe :).
Datový typ bool
může nabývat dvou hodnot definovaných v <stdbool.h>:
true
(pravda) a false
(nepravda).
Většinou bude _Bool
implementován jako int
, nebo se bude
přinejmenším automaticky přetypovat int na bool, takže pořád můžete do proměnné
typu bool
přiřazovat 1 nebo 0.
Hlavním důvodem zavedení booleovského typu je zvýšení čitelnosti zdrojového kódu.
Příklad jste mohli vidět například v kapitole funkcích s proměnlivým početem argumentů, nebo v příkladu dynamic3.c v kapitole o dynamické alokaci paměti.