4.6. Les opérateurs logiques : ET OU NON

Le Langage C possède trois opérateurs logiques :
Les opérateurs logiques acceptent comme opérandes toutes les valeurs numériques (réels compris !). Ils considèrent que :
Comment le compilateur évalue t‐il une expression logique ?
a<b && c<d prend la valeur 1 (vrai) si les deux conditions a<b et c<d sont toutes les deux vraies (de valeur non nulle), la valeur 0 (faux) dans le cas contraire.
prend la valeur 1 (vrai) si l'une au moins des deux expressions a<b et c==0 est vraie (de valeur non nulle), la valeur 0 (faux) dans le cas contraire.
! (a<b) prend la valeur 1 (vrai) si la condition a<b est fausse (de valeur 0), la valeur 0 (faux) dans le cas contraire. Cette expression est équivalente à a>=b.
expr1 && expr2 expr2
ne sera évaluée que si expr1 est vraie ne sera évaluée que si expr1 est fausse
On cherche à savoir si un entier n est compris entre 10 et 20. Solution du débutant (fausse) : if ( 10<n<20 ) … l'expression n<10 vaut 0 ou 1 selon qu’elle est vraie ou fausse. C’est cette valeur 0 ou 1 qui est ensuite comparée à 20, avec un résultat évidemment vrai. Au final, la condition 10<n<20 est toujours vraie !
Solution juste : if ( n>10 && n<20 ) … Il faut écrire deux conditions testées successivement (ET logique). Remarquons que la deuxième condition sera testée seulement si la première est vraie. |