C++ Opérateurs

Un opérateur est un symbole qui indique au compilateur d'effectuer des opérations mathématiques ou logiques spécifiques. C++ dispose de nombreux opérateurs intégrés 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
  • Opérateurs divers

Ce chapitre présentera un par un les opérateurs arithmétiques, relationnels, logiques, bit à bit, d'affectation et autres opérateurs.

Opérateurs arithmétiques

Le tableau suivant présente les opérateurs arithmétiques pris en charge par C++.

Supposons que la variable A ait une valeur de 10 et que la variable B ait une valeur de 20, alors :

OpérateursDescriptionExemple
+Ajoute les deux opérandes.A + B donnera 30
-Soustrait le deuxième opérande du premier opérande.A - B donnera -10
*Multiplie les deux opérandes.A * B donnera 200
/Divise le numérateur par le dénominateur.B / A donnera 2
%Opérateur modulo, le reste après une division entière.B % A donnera 0
++Opérateur d'incrémentation, la valeur entière augmente de 1.A++ donnera 11
--Opérateur de décrémentation, la valeur entière diminue de 1.A-- donnera 9

Exemple

Voir les exemples suivants pour comprendre les opérateurs arithmétiques disponibles en C++.

Copiez et collez le programme C++ suivant dans le fichier test.cpp, compilez et exécutez le programme.

Exemple

#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c; c = a + b; cout << "Ligne 1 - la valeur de c est" << c << endl ; c = a - b; cout << "Ligne 2 - la valeur de c est" << c << endl ; c = a * b; cout << "Ligne 3 - la valeur de c est" << c << endl ; c = a / b; cout << "Ligne 4 - la valeur de c est" << c << endl ; c = a % b; cout << "Ligne 5 - la valeur de c est" << c << endl ; int d = 10; // Test de l'incrémentation et de la décrémentation c = d++; cout << "Ligne 6 - la valeur de c est" << c << endl ; d = 10; // Réaffecter c = d--; cout << "Ligne 7 - la valeur de c est" << c << endl ; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 10
Line 7 - c 的值是 10

Opérateurs relationnels

Le tableau suivant présente les opérateurs relationnels pris en charge par C++.

Supposons que la variable A ait une valeur de 10 et que la variable B ait une valeur de 20, alors :

OpérateursDescriptionExemple
==Vérifie si les valeurs de deux opérandes sont égales ; si elles sont égales, la condition est vraie.(A == B) n'est pas vraie.
!=Vérifie si les valeurs de deux opérandes sont égales ; si elles ne sont pas égales, la condition est vraie.(A != B) est vraie.
>Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit ; si c'est le cas, la condition est vraie.(A > B) n'est pas vraie.
<Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit ; si c'est le cas, la condition est vraie.(A < B) est vraie.
>=Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit ; si c'est le cas, la condition est vraie.(A >= B) n'est pas vraie.
<=Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit ; si c'est le cas, la condition est vraie.(A <= B) est vraie.

Exemple

Voir les exemples suivants pour comprendre les opérateurs relationnels disponibles en C++.

Copiez et collez le programme C++ suivant dans le fichier test.cpp, compilez et exécutez le programme.

Exemple

#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c ; if( a == b ) { cout << "Ligne 1 - a est égal à b" << endl ; } else { cout << "Ligne 1 - a n'est pas égal à b" << endl ; } if ( a < b ) { cout << "Ligne 2 - a est inférieur à b" << endl ; } else { cout << "Ligne 2 - a n'est pas inférieur à b" << endl ; } if ( a > b ) { cout << "Ligne 3 - a est supérieur à b" << endl ; } else { cout << "Ligne 3 - a n'est pas supérieur à b" << endl ; } /*Modifiez les valeurs de a et b*/ a = 5; b = 20; if ( a <= b ) { cout << "Ligne 4 - a est inférieur ou égal à b" << endl ; } if ( b >= a ) { cout << "Ligne 5 - b est supérieur ou égal à a" << endl ; } return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Line 1 - a 不等于 b
Line 2 - a 不小于 b
Line 3 - a 大于 b
Line 4 - a 小于或等于 b
Line 5 - b 大于或等于 a

Opérateurs logiques

Le tableau suivant présente les opérateurs logiques pris en charge par C++.

Supposons que la variable A ait pour valeur 1 et que la variable B ait pour valeur 0, alors :

OpérateursDescriptionExemple
&&On l'appelle l'opérateur logique ET. Si les deux opérandes sont vrais, alors la condition est vraie.(A && B) est faux.
||On l'appelle l'opérateur logique OU. Si l'un des deux opérandes est vrai, alors la condition est vraie.(A || B) est vrai.
!On l'appelle l'opérateur logique NON. Il est utilisé pour inverser l'état logique d'un opérande. Si la condition est vraie, l'opérateur logique NON la rendra fausse.!(A && B) est vrai.

Exemple

Voir les exemples suivants pour comprendre les opérateurs logiques disponibles en C++.

Copiez et collez le programme C++ suivant dans le fichier test.cpp, compilez et exécutez le programme.

Exemple

#include <iostream> using namespace std; int main() { int a = 5; int b = 20; int c ; if ( a && b ) { cout << "Ligne 1 - La condition est vraie"<< endl ; } if ( a || b ) { cout << "Ligne 2 - La condition est vraie"<< endl ; } /*Modifiez les valeurs de a et b*/ a = 0; b = 10; if ( a && b ) { cout << "Ligne 3 - La condition est vraie"<< endl ; } else { cout << "Ligne 4 - La condition n'est pas vraie"<< endl ; } if ( !(a && b) ) { cout << "Ligne 5 - La condition est vraie"<< endl ; } return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Line 1 - 条件为真
Line 2 - 条件为真
Line 4 - 条件不为真
Line 5 - 条件为真

Opérateurs bit à bit

Les opérateurs bit à bit agissent sur les bits et effectuent des opérations bit par bit. Les tables de vérité de &, | et ^ sont les suivantes :

pqp & qp | qp ^ q
00000
01011
11110
10011

Supposons que A = 60 et B = 13. Exprimés en format binaire, ils sont les suivants :

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

Le tableau suivant présente les opérateurs bit à bit pris en charge par C++. Supposons que la variable A ait une valeur de 60 et que la variable B ait une valeur de 13, alors :

OpérateursDescriptionExemple
&

Opération AND bit à bit. Effectue une opération "AND" sur les bits binaires. Règles de l'opération :

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
(A & B) donne 12, soit 0000 1100.
|

Opérateur OR bit à bit. Effectue une opération "OR" sur les bits binaires. Règles de l'opération :

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) donne 61, soit 0011 1101.
^

Opérateur XOR. Effectue une opération "XOR" sur les bits binaires. Règles de l'opération :

0^0=0;   
0^1=1;   
1^0=1;  
1^1=0;
(A ^ B) a pour valeur 49, soit 0011 0001.
~

Opérateur NOT bit à bit. Effectue une opération d’« inversion » sur les bits binaires. Règles de fonctionnement :

~1=-2;   
~0=-1;
(~A) donnera -61, soit 1100 0011, la forme en complément à deux d'un nombre binaire signé.
<<Opérateur de décalage binaire à gauche. Décale tous les bits binaires d'un opérande vers la gauche d'un certain nombre de positions (les bits binaires les plus à gauche sont abandonnés, et des 0 sont insérés à droite).A << 2 a pour valeur 240, soit 1111 0000.
>>Opérateur de décalage binaire à droite. Décale tous les bits binaires d'un nombre vers la droite d'un certain nombre de positions. Pour les nombres positifs, des 0 sont insérés à gauche ; pour les nombres négatifs, des 1 sont insérés à gauche ; les bits à droite sont supprimés.A >> 2 a pour valeur 15, soit 0000 1111.

Exemple

Consultez les exemples suivants pour comprendre les opérateurs bit à bit disponibles en C++.

Copiez et collez le programme C++ suivant dans le fichier test.cpp, compilez et exécutez le programme.

Exemple

#include <iostream> using namespace std; int main() { unsigned int a = 60; // 60 = 0011 1100 unsigned int b = 13; // 13 = 0000 1101 int c = 0; c = a & b; // 12 = 0000 1100 cout << "Ligne 1 - la valeur de c est" << c << endl ; c = a | b; // 61 = 0011 1101 cout << "Ligne 2 - la valeur de c est" << c << endl ; c = a ^ b; // 49 = 0011 0001 cout << "Ligne 3 - la valeur de c est" << c << endl ; c = ~a; // -61 = 1100 0011 cout << "Ligne 4 - la valeur de c est" << c << endl ; c = a << 2; // 240 = 1111 0000 cout << "Ligne 5 - la valeur de c est" << c << endl ; c = a >> 2; // 15 = 0000 1111 cout << "Ligne 6 - la valeur de c est" << c << endl ; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15

Opérateurs d'affectation

Le tableau suivant répertorie les opérateurs d'affectation pris en charge par C++ :

OpérateursDescriptionExemple
=Opérateur d'affectation simple. Affecte la valeur de l'opérande droit à l'opérande gauche.C = A + B affectera la valeur de A + B à C.
+=Opérateur d'affectation par addition, ajoute l'opérande droit à l'opérande gauche et affecte le résultat à l'opérande gauche.C += A équivaut à C = C + A.
-=Opérateur d'affectation par soustraction, soustrait l'opérande droit de l'opérande gauche et affecte le résultat à l'opérande gauche.C -= A équivaut à C = C - A.
*=Opérateur d'affectation par multiplication, multiplie l'opérande droit par l'opérande gauche et affecte le résultat à l'opérande gauche.C *= A est équivalent à C = C * A.
/=Opérateur de division et d'affectation, 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.
%=Opérateur de modulo et d'affectation. Calcule le modulo de deux opérandes et l'affecte à l'opérande gauche.C %= A est équivalent à C = C % A.
<<=Opérateur de décalage à gauche et d'affectation.C <<= 2 est équivalent à C = C << 2.
>>=Opérateur de décalage à droite et d'affectation.C >>= 2 est équivalent à C = C >> 2.
&=Opérateur ET bit à bit et d'affectation.C &= 2 est équivalent à C = C & 2.
^=Opérateur OU exclusif bit à bit et d'affectation.C ^= 2 est équivalent à C = C ^ 2
|=Opérateur OU bit à bit et d'affectation.C |= 2 est équivalent à C = C | 2

Exemple

Voir les exemples suivants pour comprendre les opérateurs d'affectation disponibles en C++.

Copiez et collez le programme C++ suivant dans le fichier test.cpp, compilez et exécutez le programme.

Exemple

#include <iostream> using namespace std; int main() { int a = 21; int c ; c = a; cout << "Ligne 1 - exemple de l'opérateur =, valeur de c = :" <<c<< endl ; c += a; cout << "Ligne 2 - exemple de l'opérateur +=, valeur de c = :" <<c<< endl ; c -= a; cout << "Ligne 3 - exemple de l'opérateur -=, valeur de c = :" <<c<< endl ; c *= a; cout << "Ligne 4 - exemple de l'opérateur *=, valeur de c = :" <<c<< endl ; c /= a; cout << "Ligne 5 - exemple de l'opérateur /=, valeur de c = :" <<c<< endl ; c = 200; c %= a; cout << "Ligne 6 - exemple de l'opérateur %=, valeur de c = :" <<c<< endl ; c <<= 2; cout << "Ligne 7 - exemple de l'opérateur <<=, valeur de c = :" <<c<< endl ; c >>= 2; cout << "Ligne 8 - exemple de l'opérateur >>=, valeur de c = :" <<c<< endl ; c &= 2; cout << "Ligne 9 - exemple de l'opérateur &=, valeur de c = :" <<c<< endl ; c ^= 2; cout << "Ligne 10 - exemple de l'opérateur ^=, valeur de c = :" <<c<< endl ; c |= 2; cout << "Ligne 11 - exemple de l'opérateur |=, valeur de c = :" <<c<< endl ; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Line 1 - =  运算符实例,c 的值 = 21
Line 2 - += 运算符实例,c 的值 = 42
Line 3 - -= 运算符实例,c 的值 = 21
Line 4 - *= 运算符实例,c 的值 = 441
Line 5 - /= 运算符实例,c 的值 = 21
Line 6 - %= 运算符实例,c 的值 = 11
Line 7 - <<= 运算符实例,c 的值 = 44
Line 8 - >>= 运算符实例,c 的值 = 11
Line 9 - &= 运算符实例,c 的值 = 2
Line 10 - ^= 运算符实例,c 的值 = 0
Line 11 - |= 运算符实例,c 的值 = 2

Opérateurs divers

Le tableau suivant répertorie quelques autres opérateurs importants pris en charge par C++.

OpérateursDescription
sizeofopérateur sizeofRenvoie la taille d'une variable. Par exemple, sizeof(a) renvoie 4, où a est un entier.
Condition ? X : YOpérateur conditionnelSi la condition est vraie ? alors la valeur est X : sinon la valeur est Y.
,Opérateur virguleIl exécute une série d'opérations en séquence. La valeur de l'expression virgule entière est la valeur de la dernière expression dans la liste séparée par des virgules.
. (point) et -> (flèche)Opérateur de membreUtilisé pour référencer les membres de classes, de structures et d'unions.
ConversionOpérateur de conversionConvertit un type de données en un autre type de données. Par exemple, int(2.2000) renvoie 2.
&Opérateur de pointeur &Renvoie l'adresse d'une variable. Par exemple, &a; donnera l'adresse réelle de la variable.
*Opérateur de pointeur *Pointe vers une variable. Par exemple, *var; pointera vers la variable var.

Priorité des opérateurs en C++

La priorité des opérateurs détermine le regroupement des termes dans une expression. Cela affecte la façon dont une expression est évaluée. Certains opérateurs ont une priorité plus élevée que d'autres ; par exemple, les opérateurs de multiplication et de division ont une priorité plus élevée que les opérateurs d'addition et de soustraction.

Par exemple, x = 7 + 3 * 2. Ici, x reçoit 13, et non 20, car l'opérateur * a une priorité plus élevée que +, donc la multiplication 3*2 est calculée en premier, puis 7 est ajouté.

Le tableau suivant répertorie les opérateurs par ordre de priorité décroissante. Les opérateurs ayant une priorité plus élevée apparaissent en haut du tableau, et les opérateurs ayant une priorité plus faible apparaissent en bas. Dans une expression, les opérateurs ayant une priorité plus élevée sont évalués en premier.

Catégorie OpérateursAssociativité
Postfixe() [] -> . ++ - -   De gauche à droite
Unaire + - ! ~ ++ - - (type)* & sizeof  De droite à gauche
Multiplicatif * / % De gauche à droite
Additif+ -  De gauche à droite
Décalage << >>  De gauche à droite
Relation< <= > >=  De gauche à droite
Égalité == !=  De gauche à droite
ET bit à bit&  De gauche à droite
OU exclusif bit à bit ^  De gauche à droite
OU bit à bit |  De gauche à droite
ET logique&&  De gauche à droite
OU logique ||  De gauche à droite
Conditions?:  De droite à gauche
Affectation = += -= *= /= %=>>= <<= &= ^= |= De droite à gauche
comma ,  De gauche à droite

Exemple

Voir les exemples suivants pour comprendre la priorité des opérateurs en C++.

Copiez et collez le programme C++ suivant dans le fichier test.cpp, compilez et exécutez le programme.

Comparez la différence entre la présence et l'absence de parenthèses, ce qui produira des résultats différents. Comme (), /, *, et + ont des niveaux de priorité différents, les opérateurs ayant une priorité plus élevée seront évalués en premier.

Exemple

#include <iostream> using namespace std; int main() { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 cout << "La valeur de (a + b) * c / d est" << e << endl ; e = ((a + b) * c) / d; // (30 * 15 ) / 5 cout << "La valeur de ((a + b) * c) / d est" << e << endl ; e = (a + b) * (c / d); // (30) * (15/5) cout << "La valeur de (a + b) * (c / d) est" << e << endl ; e = a + (b * c) / d; // 20 + (150/5) cout << "La valeur de a + (b * c) / d est" << e << endl ; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

(a + b) * c / d 的值是 90
((a + b) * c) / d 的值是 90
(a + b) * (c / d) 的值是 90
a + (b * c) / d 的值是 50
autres extensions