Programmation en C – Les opérateurs

Un opérateur est un symbole qui indique au compilateur d’effectuer des fonctions mathématiques ou logiques spécifiques. Le langage C intègre plusieurs opérateurs et fournit les types d’opérateurs suivants:

  • Opérateurs arithmétiques
  • Opérateurs relationnels
  • Opérateurs logiques
  • Opérateurs bit à bit
  • Opérateurs d’affectation

Dans ce chapitre, nous allons voir le fonctionnement de chaque opérateur.
 
 

Opérateurs arithmétiques

Le tableau suivant présente tous les opérateurs arithmétiques supportés par le langage C. Supposons que la variable A contenant la valeur 10 et que la variable B contenant la valeur 20.

Opérateur Description Exemple
+ La somme A + B = 30
La soustraction A − B = 10
La multiplication A ∗ B = 200
La division B ∕ A = 2
% Modulo c’est le reste d’une division entier. B % A = 0
++ Opérateur d’incrémentation qui consiste à ajouter 1 à une variable. A++ = 11
Opérateur de décrémentation qui consiste à soustraire 1 à une variable. A– = 9
Exemple

Essayez l’exemple suivant pour comprendre tous les opérateurs arithmétiques disponibles dans C

#include <stdio.h>

main() {

   int a = 21;
   int b = 10;
   int c ;

   c = a + b;
   printf("Ligne 1 - La valeur de c est %dn", c );
 
   c = a - b;
   printf("Ligne 2 - La valeur de c est %dn", c );
 
   c = a * b;
   printf("Ligne 3 - La valeur de c est %dn", c );
 
   c = a / b;
   printf("Ligne 4 - La valeur de c est %dn", c );
 
   c = a % b;
   printf("Ligne 5 - La valeur de c est %dn", c );
 
   c = a++; 
   printf("Ligne 6 - La valeur de c est %dn", c );
 
   c = a--; 
   printf("Ligne 7 - La valeur de c est %dn", c );
}

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant

Ligne 1 - La valeur de c est 31
Ligne 2 - La valeur de c est 11
Ligne 3 - La valeur de c est 210
Ligne 4 - La valeur de c est 2
Ligne 5 - La valeur de c est 1
Ligne 6 - La valeur de c est 21
Ligne 7 - La valeur de c est 22

 
 

Opérateurs relationnels

Le tableau suivant montre tous les opérateurs relationnels supportés par C. Supposons que la variable A contenant la valeur 10 et la variable B contenant la valeur 20 donc

Opérateur Description Exemple
== Vérifie si les deux opérandes sont égales ou non. Si oui, alors la condition vraie. (A == B) est faux.
!= Vérifie si les deux opérandes sont égales ou non. Si les valeurs ne sont pas égales, la condition est vraie. (A != B) est vrai.
> Vérifie si la valeur de l’opérande gauche est supérieure à la valeur de l’opérande droit. Si oui, alors la condition devient vraie. (A > B) est faux.
< Vérifie si la valeur de l’opérande gauche est inférieure à la valeur de l’opérande droit. Si oui, alors la condition devient vraie. (A < B) est vrai.
>= Vérifie si la valeur de l’opérande gauche est supérieure ou égale à la valeur de l’opérande droit. Si oui, alors la condition devient vraie. (A >= B) est faux.
<= Vérifie si la valeur de l’opérande gauche est inférieure ou égale à la valeur de l’opérande droit. Si oui, alors la condition devient vraie. (A <= B) est vrai.

Exemple
Essayez l’exemple suivant pour comprendre tous les opérateurs relationnels disponibles en C

#include &lt;stdio.h&gt;

main() {

   int A = 21;
   int B = 10;

   if( A == B ) {
      printf("Ligne 1 - A est egale de Bn" );
   }
   else {
      printf("Ligne 1 - A est different de Bn" );
   }
 
   if ( A < B ) {
      printf("Ligne 2 - A est inferieur de Bn" );
   }
   else {
      printf("Ligne 2 - A n est pas inferieur de Bn" );
   }
 
   if ( A > B ) {
      printf("Ligne 3 - A est superieur de Bn" );
   }
   else {
      printf("Ligne 3 - A est non superieur de Bn" );
   }
   
   /* On Change la valeur de A et B */
   A = 5;
   B = 20;
 
   if ( A <= B ) {
      printf("Ligne 4 - A est inferieur ou egal de Bn" );
   }
 
   if ( B >= A ) {
      printf("Ligne 5 - B est superieur ou egal de An" );
   }
} 

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant

Ligne 1 - A different de B
Ligne 2 - A n est pas inferieur de B
Ligne 3 - A est superieur de B
Ligne 4 - A est inferieur ou egal de B
Ligne 5 - B est superieur ou egal de A
Opérateurs logiques

Le tableau suivant montre tous les opérateurs logiques pris en charge par le langage C. Supposons que la variable A contenant la valeur 1 et la variable B contenant la valeur 0.

Opérateur Description Exemple
&& Opérateur logique AND. Si les deux opérandes ne sont pas égaux à zéro, la condition devient vraie. (A && B) est faux.
|| Opérateur logique OR. Si l’un des deux opérandes est non nul, la condition devient vraie. (A || B) est vrai.
! Opérateur logique NOT. Il est utilisé pour inverser l’état logique de son opérande. Si une condition est vraie, l’opérateur NOT le rendra faux. !(A && B) est vrai.

Exemple
Essayez l’exemple suivant pour comprendre tous les opérateurs logiques disponibles dans C

#include &lt;stdio.h&gt;

main() {

   int A = 5;
   int B = 20;

   if ( A && B ) {
      printf("Line 1 - La condition est vraien" );
   }
 
   if ( A || B ) {
      printf("Line 2 - La condition est vraien" );
   }
   
   /* On Change la valeur de a et b */
   A = 0;
   B = 10;
 
   if ( A && B ) {
      printf("Line 3 - La condition est vraien" );
   }
   else {
      printf("Line 3 - La condition n'est pas vraien" );
   }
 
   if ( !(A && B) ) {
      printf("Line 4 - La condition est vraien" );
   }
 
}

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant

Ligne 1 - La condition est vraie
Ligne 2 - La condition est vraie
Ligne 3 - La condition n'est pas vraie
Ligne 4 - La condition est vraie

 
 

Opérateurs bit à bit

L’opérateur bit à bit fonctionne sur les bits et exécute l’opération bit par bit. Les tables de vérité pour &,, et ^ sont les suivantes

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Supposons A = 60 et B = 13 en format binaire, ils seront comme suit –

A = 0011 1100

B = 0000 1101

—————–

A & B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001

~ A = 1100 0011

Essayez l’exemple suivant pour comprendre tous les opérateurs bit à bit disponibles dans C

#include &lt;stdio.h&gt;

main() {

   unsigned int a = 60; /* 60 = 0011 1100 */  
   unsigned int b = 13; /* 13 = 0000 1101 */
   int c = 0;           

   c = a & b;       /* 12 = 0000 1100 */ 
   printf("Ligne 1 - Valeur de c est %dn", c );

   c = a | b;       /* 61 = 0011 1101 */
   printf("Ligne 2 - Valeur de c est %dn", c );

   c = a ^ b;       /* 49 = 0011 0001 */
   printf("Ligne 3 - Valeur de c est %dn", c );

   c = ~a;          /*-61 = 1100 0011 */
   printf("Ligne 4 - Valeur de c est %dn", c );

   c = a << 2;     /* 240 = 1111 0000 */
   printf("Ligne 5 - Valeur de c est %dn", c );

   c = a >> 2;     /* 15 = 0000 1111 */
   printf("Ligne 6 - Valeur de c est %dn", c );
}

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant

Ligne 1 - La valeur de c est 12
Ligne 2 - La valeur de c est 61
Ligne 3 - La valeur de c est 49
Ligne 4 - La valeur de c est -61
Ligne 5 - La valeur de c est 240
Ligne 6 - La valeur de c est 15
Opérateurs d’affectation

Le tableau suivant représente les opérateurs d’affectation pris en charge par le langage C

Opérateur Description Exemple
= Opérateur d’affectation simple. Affecte les valeurs des opérandes de droite à l’opérande de gauche C = A + B assignera la valeur de A + B à C
+= Il ajoute l’opérande droit à l’opérande gauche et affecte le résultat à l’opérande gauche. C += A est équivalent à C = C + A
-= Il soustrait l’opérande droit de l’opérande gauche et affecte le résultat à l’opérande gauche. C -= A est équivalent à C = C – A
*= Il multiplie l’opérande droit par l’opérande gauche et attribue le résultat à l’opérande gauche. C *= A est équivalent à C = C * A
/= Il divise l’opérande gauche par l’opérande droit et affecte le résultat à l’opérande gauche. C /= A est équivalent à C = C / A
%= Il prend le modulo en utilisant deux opérandes et attribue le résultat à l’opérande gauche. C %= A est équivalent à C = C % A
<<= Opérateur de décalage à gauche. C <<= 2 est identique à C = C << 2
>>= Opérateur de décalage à droite C >>= 2 est identique à C = C >> 2
&= Opérateur bit à bit. C &= 2 est identique à C = C & 2
^= Opérateur OU exclusif bit à bit. C ^= 2 est identique à C = C ^ 2
|= Opérateur OU inclusive bit à bit. C |= 2 est identique à C = C | 2

Exemple
Essayez l’exemple suivant pour comprendre tous les opérateurs d’affectation disponibles en C

#include &lt;stdio.h&gt;

main() {

   int a = 21;
   int c ;

   c =  a;
   printf("Ligne 1 - Exemple de l operateur  = , Value of c = %dn", c );

   c +=  a;
   printf("Ligne 2 - Exemple de l operateur  +=, Valeur de c = %dn", c );

   c -=  a;
   printf("Ligne 3 - Exemple de l operateur  -=, Valeur de c = %dn", c );

   c *=  a;
   printf("Ligne 4 - Exemple de l operateur  *=, Valeur de c = %dn", c );

   c /=  a;
   printf("Ligne 5 - Exemple de l operateur  /= , Valeur de c = %dn", c );

   c  = 200;
   c %=  a;
   printf("Ligne 6 - Exemple de l operateur  %=, Valeur de c = %dn", c );

   c <<=  2;
   printf("Ligne 7 - Exemple de l operateur  <<= , Valeur de c = %dn", c );

   c >>=  2;
   printf("Ligne 8 - Exemple de l operateur  >>=, Valeur de c = %dn", c );

   c &=  2;
   printf("Ligne 9 - Exemple de l operateur  &=, Valeur de c = %dn", c );

   c ^=  2;
   printf("Ligne 10 - Exemple de l operateur  ^=, Valeur de c = %dn", c );

   c |=  2;
   printf("Ligne 11 - Exemple de l operateur  |=, Valeur de c = %dn", c );

}

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant

Ligne 1 -  Exemple de l operateur =, valeur de c = 21
Ligne 2 -  Exemple de l operateur + =, valeur de c = 42
Ligne 3 -  Exemple de l operateur - =, valeur de c = 21
Ligne 4 -  Exemple de l operateur * =, valeur de c = 441
Ligne 5 -  Exemple de l operateur / =, valeur de c = 21
Ligne 6 -  Exemple de l operateur % =, valeur de c = 11
Ligne 7 -  Exemple de l operateur << =, valeur de c = 44
Ligne 8 -  Exemple de l operateur >> =, valeur de c = 11
Ligne 9 -  Exemple de l operateur & =, valeur de c = 2
Ligne 10 - Exemple de l operateur ^ =, valeur de c = 0
Ligne 11 - Exemple de l operateur | =, valeur de c = 2

 
 

Opérateurs sizeof et ternaire

Outre les opérateurs examinés ci-dessus, il existe quelques autres opérateurs importants dont sizeof et ? : sont pris en charge par le langage C.

Opérateur Description Exemple
sizeof() Renvoie la taille d’une variable. sizeof(a), (a doit être un entier), si le cas il retournera 4.
& Renvoie l’adresse d’une variable. &a; Renvoie l’adresse de la variable a.
* Pointeur sur une variable. *a;
? : Expression conditionnelle. If Condition est vraie ? donc la valeur X : sinon la valeur Y

Essayez l’exemple suivant pour comprendre tous les opérateurs divers disponibles en C

#include &lt;stdio.h&gt;

main() {

   int a = 4;
   short b;
   double c;
   int* ptr;

   /* Exemple de taille de l operateur sizeof */
   printf("Ligne 1 - Taille de la variable a= %dn", sizeof(a) );
   printf("Ligne 2 - Taille de la variable b = %dn", sizeof(b) );
   printf("Ligne 3 - Taille de la variable c= %dn", sizeof(c) );

   /*  Exemple de l'operateur & et l operateur *  */ 
   ptr = &a; /* 'Ptr' contient maintenant l'adresse de 'a' */
   printf("valeur de a est  %dn", a);
   printf("*ptr est %d.n", *ptr);

   /* Exemple de l operateur ternaire */
   a = 10;
   b = (a == 1) ? 20: 30;
   printf( "La valeur de b est %dn", b );

   b = (a == 10) ? 20: 30;
   printf( "La valeur de b est %dn", b );
}

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant

Ligne 1 - Taille de la variable a = 4
Ligne 2 - Taille de la variable b = 2
Ligne 3 - Taille de la variable c = 8
Valeur de a est 4
* Ptr est 4.
La valeur de b est 30
La valeur de b est 20

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *