Comprendre la priorité et l'associativité des opérateurs en C : guide clair
Priorité des opérateurs
La priorité des opérateurs détermine quel opérateur est exécuté en premier s'il y a plus d'un opérateur dans une expression.
Considérons un exemple :
int x = 5 - 17 * 6;En C, la priorité de * est plus élevée que - et =. Donc, 17 * 6 est évalué en premier. Ensuite, l'expression avec - est évaluée car la priorité de - est plus élevée que celle de =.
Voici un tableau de priorité des opérateurs du plus élevé au plus bas. La propriété d'associativité sera discutée sous peu.
Tableau de priorité et associativité des opérateurs
| Opérateur | Signification | Associativité |
|---|---|---|
| ()[] -> . | Appel de fonction Référence élément tableau Sélection membre indirecte Sélection membre directe | Gauche à droite |
| ! ~ + - ++ -- & * sizeof (type) | Négation logique Complément bit à bit (1's) Plus unaire Moins unaire Incrémentation Décrémentation Déréférence (Adresse) Référence pointeur Retourne la taille d'un objet Conversion de type (cast) | Droite à gauche |
| * / % | Multiplier Diviser Reste | Gauche à droite |
| + - | Plus binaire (Addition) Moins binaire (Soustraction) | Gauche à droite |
| << >> | Décalage gauche Décalage droite | Gauche à droite |
| < <= > >= | Inférieur à Inférieur ou égal Supérieur à Supérieur ou égal | Gauche à droite |
| == != | Égal à Différent de | Gauche à droite |
| & | ET bit à bit | Gauche à droite |
| ^ | OU exclusif bit à bit | Gauche à droite |
| | | OU bit à bit | Gauche à droite |
| && | ET logique | Gauche à droite |
| || | OU logique | Gauche à droite |
| ?: | Opérateur conditionnel | Droite à gauche |
| = *= /= %= += -= &= ^= |= <<= >>= | Affectation simple Affecter produit Affecter quotient Affecter reste Affecter somme Affecter différence Affecter ET bit à bit Affecter OU exclusif bit à bit Affecter OU bit à bit Affecter décalage gauche Affecter décalage droite | Droite à gauche |
| , | Séparateur d'expressions | Gauche à droite |
Associativité des opérateurs
L'associativité des opérateurs détermine la direction dans laquelle une expression est évaluée. Par exemple,
b = a;Ici, la valeur de a est assignée à b, et non l'inverse. C'est parce que l'associativité de l'opérateur = est de droite à gauche.
Aussi, si deux opérateurs de même priorité sont présents, l'associativité détermine la direction dans laquelle ils s'exécutent.
Considérons un exemple :
1 == 2 != 3
Ici, les opérateurs == et != ont la même priorité. Et leur associativité est de gauche à droite. Donc, 1 == 2 est exécuté en premier.
L'expression ci-dessus est équivalente à :
(1 == 2) != 3
Note : Si une instruction a plusieurs opérateurs, vous pouvez utiliser des parenthèses () pour rendre le code plus lisible.
Table des matières
Langue C
- Opérateurs C++ expliqués : Types, exemples et programmes d'exemple
- Types de Données C# Expliqués : Int, Double, Bool, String et Plus
- Maîtriser les chaînes C# : Fondamentaux, opérations et techniques avancées
- Classes Abstraites C# : Tutoriel Pratique avec Exemples de Code
- Constantes et littéraux en C++ : Types, syntaxe et bonnes pratiques
- Récursivité en C simplifiée : Écrire et utiliser des fonctions récursives
- Maîtriser la récursion en C++ : Concepts, exemples et bonnes pratiques
- Maîtriser les variables C# et types de données primitifs : guide complet
- Compte Microsoft : Accès sécurisé et gestion