Opérateurs logiques

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 :


L3 EEA & ISS 2019-21 / p. castelan