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 <stdio.h> 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 <stdio.h> 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 <stdio.h> 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 <stdio.h> 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 <stdio.h> 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