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 !
A 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
|