Il s'agit d'opérateur effectuant des comparaisons permettant de réaliser des tests complexes.
Le résultat d'un test est un booléen : Vrai ou Faux.
En C est Vrai toute valeur non nulle, mais un test dont le résultat est Vrai retourne la valeur 1.
La valeur Faux correspond à 0.
Les opérateurs logiques ont tous le même degré de priorité, il faut utiliser des parenthèses pour être sur que le test sera effectué comme prévu.
Considérons l'exemple suivant :
#include<stdio.h>
int main(void)
{ if ( 3 < 2 < 1 )
printf("vrai !\n") ;
else
printf("Faux !\n") ;
if ( 3 < (2 < 1) )
printf("vrai !\n") ;
else
printf("Faux !\n") ;
return 0;
}
Ce programme retourne :
vrai !
Faux !
Dans le premier cas : 3<2<1
Le test est effectué en deux étapes : (3<2) < 1, or 3<2 est faux et vaut 0 la parenthèse (qui n’y est pas !) peut être remplacée par 0, soit (0)<1 ce qui est vrai
Dans le second cas : 3<(2<1)
La parenthèse fixe les priorités et c’est (2<1) qui est testé, ce qui est faux et vaut 0. C’est donc 3<(0) qui est testé en seconde étape, ce qui est Faux.
Opérateurs logiques.
Opérateurs de comparaison :
< // inférieur
> // supérieur
<= // inférieur ou égal
>= // supérieur ou égal
== // test d'égalité. Noter le double égal.
!= // test de différence.
Opérateur de négation :
C'est l'opérateur Not ou Non, noté ! en C. Il est dit unaire car il n'a qu'un argument.
Exemple :
#include<stdio.h>
int main(void)
{ int a=1 ;
int b=1 ;
if ( !( a < b ) )
printf("vrai !\n") ;
else
printf("Faux !\n") ;
if ( !b >= !a )
printf("vrai !\n") ;
else
printf("Faux !\n") ;
printf("%d\t%d\n", !0, !1) ;
return 0;
}
Opérateur binaires :