Opérateurs en C

Introduction aux opérateurs

Dans le langage de programmation C, les opérateurs sont des symboles utilisés pour exécuter diverses opérations sur les valeurs et les variables. Ils indiquent au compilateur les fonctions mathématiques ou logiques spécifiques à effectuer. Voici les différentes catégories d'opérateurs disponibles en C :

Opérateurs arithmétiques

Les opérateurs arithmétiques de base en C permettent d'effectuer des opérations mathématiques communes :

| Opérateur | Nom | Description | |-----------|--------------|-----------------------------------------------------------| | + | Addition | x + y renvoie la somme de x et y. | | - | Soustraction | x - y renvoie la différence entre x et y. | | * | Multiplication| x * y renvoie le produit de x et y. | | / | Division | x / y renvoie le quotient de x divisé par y. | | % | Modulo | x % y renvoie le reste entier de la division de x par y.| | ++ | Incrément | x++ renvoie x + 1. | | -- | Décrément | x-- renvoie x - 1. |

Exemples d'utilisation :

int x = 0;
 x = x + 4; // x est maintenant 4
 x = x - 1; // x est maintenant 3
 x = x * 8; // x est maintenant 24
 x = x / 4; // x est maintenant 6
 x = x % 4; // x est maintenant 2
 x++;       // x est maintenant 3
 x--;       // x est maintenant 2

Opérateurs relationnels

Les opérateurs relationnels sont utilisés pour comparer deux valeurs et renvoient un résultat booléen : vrai ou faux.

| Opérateur | Nom | Description | |-----------|--------------|----------------------------------------------------------| | == | Égal | x == y est vrai si x et y sont égaux. | | != | Différent | x != y est vrai si x et y ne sont pas égaux. | | < | Moins que | x < y est vrai si x est inférieur à y. | | > | Plus grand | x > y est vrai si x est supérieur à y. | | <= | Moins que ou égal | x <= y est vrai si x est inférieur ou égal à y. | | >= | Plus grand ou égal | x >= y est vrai si x est supérieur ou égal à y. |

Exemple d'utilisation :

int x = 7;
int y = 5;
if (x > y) {  // Ce code sera exécuté.
}
if (x == y) {  // Ce code ne sera pas exécuté.
}

Opérateurs logiques

Les opérateurs logiques manipulent des valeurs booléennes et renvoient également des valeurs booléennes :

| Opérateur | Nom | Description | |-----------|--------------|---------------------------------------------------------| | ! | Non | !x est vrai lorsque x est faux et faux lorsque x est vrai. | && | Et | x && y est vrai si x et y sont tous les deux vrais. | | || | Ou | x || y est vrai si soit x soit y est vrai. |

Exemple d'utilisation :

int x = 7;
int y = 5;
if (x > y || x == y) {  // Ce code sera exécuté.
}
if (x == y && x < 0) {  // Ce code ne sera pas exécuté.
}

Opérateurs bit à bit

Les opérateurs bit à bit manipulent les bits individuels d'un entier :

| Opérateur | Nom | Description | |-----------|--------------|--------------------------------------------------------| | & | Et | Le résultat a le bit actif uniquement lorsque les deux opérandes ont ce bit actif. | | | | Ou | Le résultat a le bit actif si soit l'un des opérandes a ce bit actif. | | ^ | Ou exclusif | Le résultat a le bit actif uniquement si un seul des opérandes a ce bit actif. | ~ | Non | Prend un seul opérande et inverse chaque bit. | | << | Décalage à gauche | a << b signifie que les bits de a sont décalés vers la gauche de b espaces. | | >> | Décalage à droite | a >> b signifie que les bits de a sont décalés vers la droite de b espaces. |

Exemple d'utilisation :

int x;
 x = 19 & 7; // x est 3 : 10011 & 00111 = 00011
 x = 19 | 7; // x est 23 : 10011 | 00111 = 10111
 x = 19 ^ 7; // x est 20 : 10011 ^ 00111 = 10100
 x = 7 << 2; // x est 28 : 00111 << 2 = 11100
 x = 19 >> 2; // x est 4 : 10011 >> 2 = 00100

Opérateurs d'assignation

Les opérateurs d'assignation sont utilisés pour assigner une valeur à une variable :

| Opérateur | Nom | Description | |-----------|-------------------------|-----------------------------------------------------| | = | Assignation | a = 3 assigne la valeur 3 à la variable a. | | += | Assignation d'addition | a += 3 est équivalent à a = a + 3. | | -= | Assignation de soustraction | a -= 3 est équivalent à a = a - 3. | | *= | Assignation de multiplication | a *= 3 est équivalent à a = a * 3. | | /= | Assignation de division | a /= 3 est équivalent à a = a / 3. | | %= | Assignation de modulo | a %= 3 est équivalent à a = a % 3. | | &= | Assignation ET | a &= 3 est équivalent à a = a & 3. | | |= | Assignation OU | a |= 3 est équivalent à a = a | 3. | | ^= | Assignation OU exclusif | a ^= 3 est équivalent à a = a ^ 3. | | <<= | Assignation décalage à gauche | a <<= 3 est équivalent à a = a << 3. | | >>= | Assignation décalage à droite | a >>= 3 est équivalent à a = a >> 3. |


## Opérateurs divers

Ces opérateurs ne rentrent dans aucune catégorie précise :

| Opérateur | Nom                     | Description                                         |
|-----------|-------------------------|-----------------------------------------------------|
| sizeof()  | Taille                  | `sizeof(x)` renvoie la taille de la variable `x`.  |
| &         | Adresse                 | `&x` renvoie l'adresse de la variable `x`.         |
| *         | Pointeur                | `*x` renvoie un pointeur vers la variable `x`. (ne pas confondre avec la multiplication) |
| ? :       | Opérateur conditionnel   | `expression ? x : y` renvoie `x` si l'expression est vraie, sinon `y`. |