Dans ce didacticiel, vous découvrirez la priorité et l'associativité des opérateurs à l'aide d'exemples.
Préséance des opérateurs
La priorité des opérateurs détermine quel opérateur est exécuté en premier s'il y a plusieurs opérateurs dans une expression.
Analysons un exemple:
int x = 5 - 17* 6;
En C, la priorité de *
est supérieure à -
et =
. Par conséquent, 17 * 6
est évalué en premier. Ensuite, l'expression impliquant -
est évaluée comme la priorité de -
est supérieure à celle de =
.
Voici un tableau des priorités des opérateurs du plus haut au plus bas. La propriété d' associativité sera discutée prochainement.
Table de préséance et d'associativité des opérateurs
Opérateur | Signification de l'opérateur | Associativité |
---|---|---|
() () -> . | Appel fonctionnel Référence d'élément de tableau Sélection indirecte de membres Sélection directe de membres | De gauche à droite |
! ~ + - ++ - & * sizeof (type) | Négation logique Complément bit à bit (1) Unaire plus Unaire moins Incrément Décrément Déréférence (Adresse) Référence du pointeur Renvoie la taille d'un objet Typecast (conversion) | De droite à gauche |
* / % | Multiplier le reste de division | De gauche à droite |
+ - | Binaire plus (addition) Binaire moins (soustraction) | De gauche à droite |
<< >> | Décalage à gauche Décalage à droite | De gauche à droite |
< <= > > = | Inférieur à Inférieur ou égal Supérieur à Supérieur ou égal | De gauche à droite |
== ! = | Égal à Non égal à | De gauche à droite |
& | ET au niveau du bit | De gauche à droite |
^ | OU exclusif au niveau du bit | De gauche à droite |
| | OU au niveau du bit | De gauche à droite |
&& | ET logique | De gauche à droite |
|| | OU logique | De gauche à droite |
?: | Opérateur conditionnel | De droite à gauche |
= * = / = % = + = - = & = = | = << = >> = | Affectation simple Affecter le produit Affecter le quotient Affecter le reste Affecter la somme Affecter la différence Affecter au bit ET Affecter au bit XOR Affecter au bit OU Affecter le décalage à gauche Affecter le décalage à droite | De droite à gauche |
, | Séparateur d'expressions | De 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 affectée à b, et non l'inverse. C'est parce que l'associativité de l' =
opérateur est de droite à gauche.
De plus, si deux opérateurs de même priorité (priorité) sont présents, l'associativité détermine la direction dans laquelle ils s'exécutent.
Analysons un exemple:
1 == 2! = 3
Ici, les opérateurs ==
et !=
ont la même priorité. Et, leur associativité est de gauche à droite. Par conséquent, 1 == 2
est exécuté en premier.
L'expression ci-dessus équivaut à:
(1 == 2)! = 3
Remarque: Si une instruction a plusieurs opérateurs, vous pouvez utiliser des parenthèses ()
pour rendre le code plus lisible.