IV. Grandeurs à caractère booléen▲
Une grandeur de type booléen peut prendre comme valeurs Vrai ou Faux. En C ISO90, le type booléen, bien que de la première importance, est resté « incomplet ». On doit néanmoins le considérer comme un type de données particulier puisqu'il possède une gamme d'opérateurs et une sémantique qui lui sont propres.
Cet « oubli » a été réparé en C99 avec l'introduction du type _Bool.
L'importance du type booléen vient de ce qu'il est utilisé par les instructions de contrôle du programme :
if(exp_bool)… |
do(exp_bool)… |
do… while(exp_bool) |
for (…; exp_bool ;…)… |
ainsi que dans l'expression conditionnelle obtenue avec l'opérateur ternaire ?:
exp_bool ? expa : expb |
Les valeurs de type booléen sont produites comme résultat des opérateurs de comparaison.
IV-A. Opérateurs entre booléens▲
Les opérateurs suivants prennent pour opérande(s) des valeurs booléennes et fournissent une valeur booléenne :
- ET booléen : opérateur &&
- OU booléen : opérateur ||
- NON booléen : opérateur unaire !
À noter que les expressions formées à partir de l'un des deux premiers opérateurs utilisent une procédure d'évaluation particulière : leur opérande de gauche est toujours évalué en premier. Si le résultat obtenu permet de déterminer le résultat final de l'expression, l'opérande de droite n'est pas évalué.
IV-B. Représentation des valeurs booléennes▲
Si les booléens sont utilisés correctement, comme un type de donnée particulier, leur représentation interne peut être largement occultée.
Les valeurs booléennes sont assimilées à des entiers, Faux étant représenté par la valeur 0 (toute valeur différente de 0 sera considérée en tant que booléen comme étant Vrai). Les expressions fournissant une valeur booléenne comme résultat donneront 1 pour la valeur Vrai.
La conséquence de cette assimilation est qu'il est possible de mélanger des expressions arithmétiques et booléennes. Ces expressions sont peu lisibles (par défaut d'abstraction, car elles reposent sur la représentation interne des booléens), n'ont pas grand sens et constituent un vieux jargon de programmeur C. Elles peuvent toujours être remplacées par des expressions respectant la sémantique des booléens.
Ce mélange des genres est donc fortement déconseillé.
exemple Sélectionnez
|
De même, là où est attendue une valeur booléenne, placez une expression dont le résultat est une valeur booléenne.
exemple Sélectionnez
|
En C90, pour déclarer un objet de type booléen, il faudra lui donner en pratique un type entier et une fonction retournant un booléen devra retourner un type entier.
exemple Sélectionnez
|