Les opérateurs en C++ : Arithmétiques, Relationnels, Logiques

Les opérateurs en C++ : Arithmétiques, Relationnels, Logiques

Amine Abidi - Lead Software Engineer C++/Qt - Associé PointerLab

Publié par Amine Abidi - Lead Software Engineer C++/Qt - Associé PointerLab

Introduction

Les opérateurs en C++ sont des symboles qui permettent d'effectuer des opérations sur des variables et des valeurs. Ils sont essentiels pour manipuler les données et contrôler les flux dans un programme. Cet article explore les opérateurs arithmétiques, relationnels, logiques, et d'affectation, avec une introduction aux opérateurs de surcharge.


1. Les opérateurs arithmétiques

Les opérateurs arithmétiques permettent d'effectuer des calculs mathématiques de base.

Opérateur Description Exemple
+ Addition a + b
- Soustraction a - b
* Multiplication a * b
/ Division a / b
% Modulo (reste de division) a % b

Exemple simple :

#include <iostream>
using namespace std;
 
int main() {
    int a = 10, b = 3;
    cout << "Addition: " << (a + b) << endl;
    cout << "Modulo: " << (a % b) << endl;
 
    return 0;
}

2. Les opérateurs relationnels

Les opérateurs relationnels permettent de comparer deux valeurs et renvoient un résultat booléen (true ou false).

Les opérateurs relationnels

Les opérateurs relationnels permettent de comparer deux valeurs et renvoient un résultat booléen (true ou false).

Opérateur Description Exemple
== Égal à a == b
!= Différent de a != b
> Supérieur à a > b
< Inférieur à a < b
>= Supérieur ou égal à a >= b
<= Inférieur ou égal à a <= b

Exemple simple :

#include <iostream>
using namespace std;
 
int main() {
    int a = 5, b = 10;
 
    if (a < b) {
        cout << "a est plus petit que b" << endl;
    } else {
        cout << "a est supérieur ou égal à b" << endl;
    }
 
    return 0;
}

3. Les opérateurs logiques

Les opérateurs logiques sont utilisés pour combiner des conditions ou inverser une condition.

  • && (ET logique) : Renvoie true si toutes les conditions sont vraies.
    Exemple : (a > b) && (b > c)

  • || (OU logique) : Renvoie true si au moins une des conditions est vraies.
    Exemple : (a > b) || (b < c)

  • ! (NON logique / négation) : Renvoie true si la condition est fausse.
    Exemple : !(a > b)

Exemple simple :

#include <iostream>
using namespace std;
 
int main() {
    int a = 5, b = 10, c = 15;
 
    if ((a < b) && (b < c)) {
        cout << "a est inférieur à b ET b est inférieur à c" << endl;
    }
 
    if ((a > b) || (b < c)) {
        cout << "Une des deux conditions est vraie" << endl;
    }
 
    return 0;
}

4. Les opérateurs d'affectation

Les opérateurs d'affectation servent à assigner ou à modifier la valeur d'une variable.

Opérateur Description Exemple
= Affectation simple a = b
+= Addition et affectation a += b
-= Soustraction et affectation a -= b
*= Multiplication et affectation a *= b
/= Division et affectation a /= b
%= Modulo et affectation a %= b

Exemple simple :

#include <iostream>
using namespace std;
 
int main() {
    int a = 10;
 
    a += 5;  // équivalent à a = a + 5
    cout << "a après += 5 : " << a << endl;
 
    return 0;
}
 

4. Les opérateurs d'affectation

Les opérateurs d'affectation servent à assigner ou à modifier la valeur d'une variable.

Opérateur Description Exemple
= Affectation simple a = b
+= Addition et affectation a += b
-= Soustraction et affectation a -= b
*= Multiplication et affectation a *= b
/= Division et affectation a /= b
%= Modulo et affectation a %= b

Exemple simple :

#include <iostream>
using namespace std;
 
int main() {
    int a = 10;
 
    a += 5;  // équivalent à a = a + 5
    cout << "a après += 5 : " << a << endl;
 
    return 0;
}
 

6. Exercice pratique

Énoncé :

  1. Implémentez une classe Vecteur pour représenter un vecteur 2D avec des coordonnées x et y.
  2. Surchargez les opérateurs + et - pour additionner et soustraire deux vecteurs.
  3. Ajoutez une méthode pour afficher les coordonnées d'un vecteur.

Solution proposée :

#include <iostream>
using namespace std;
 
class Vecteur {
private:
    float x, y;
 
public:
    // Constructeur
    Vecteur(float xVal, float yVal) : x(xVal), y(yVal) {}
 
    // Surcharge de l'opérateur +
    Vecteur operator+(const Vecteur& v) {
        return Vecteur(x + v.x, y + v.y);
    }
 
    // Surcharge de l'opérateur -
    Vecteur operator-(const Vecteur& v) {
        return Vecteur(x - v.x, y - v.y);
    }
 
    // Méthode pour afficher les coordonnées
    void afficher() const {
        cout << "Vecteur (" << x << ", " << y << ")" << endl;
    }
};
 
int main() {
    Vecteur v1(3.0, 4.0), v2(1.0, 2.0);
 
    Vecteur somme = v1 + v2;   // Addition de vecteurs
    Vecteur difference = v1 - v2;  // Soustraction de vecteurs
 
    cout << "Somme : ";
    somme.afficher();  // Affiche : Vecteur (4.0, 6.0)
 
    cout << "Différence : ";
    difference.afficher();  // Affiche : Vecteur (2.0, 2.0)
 
    return 0;
}
 

Conclusion

Les opérateurs en C++ offrent une grande flexibilité pour manipuler les données, comparer des valeurs, et écrire des conditions logiques complexes. La surcharge d'opérateurs ajoute une couche de personnalisation et de puissance pour travailler avec des objets.

Dans le prochain article, nous explorerons les références et pointeurs en C++, des concepts cruciaux pour manipuler directement la mémoire et optimiser vos programmes.

À propos de pointerlab

pointerlab s’inspire des fonctions lambda en C++, symbole de code concis, flexible et performant. C’est cette philosophie, mêlant rigueur et modernité, que nous mettons au service des défis de nos clients.

Experts C++ et Qt, nous maîtrisons des technologies de pointe comme Qt, OpenGL, OpenCV et Unreal Engine 5 pour concevoir des solutions logicielles sur mesure et robustes. Présents dans des secteurs exigeants tels que la simulation 3D, le médical ou l’aéronautique, nous allions innovation et expertise pour relever les défis les plus complexes.

Rejoignez la communauté C++ France sur Discord !

Développez votre réseau et boostez votre carrière avec la communauté C++ France