Retour Suite Index

3.5. Les priorités des opérateurs

L'ordre de l'évaluation des différentes parties d'une expression correspond en principe à celle que nous connaissons des mathématiques.

Exemple

Supposons pour l'instruction suivante: A=5, B=10, C=1


         X = 2*A+3*B+4*C;
L'ordinateur évalue d'abord les multiplications:

         2*A ==> 10 , 3*B ==> 30 , 4*C ==> 4
Ensuite, il fait l'addition des trois résultats obtenus:

         10+30+4 ==> 44
A la fin, il affecte le résultat général à la variable:

         X = 44

Priorité d'un opérateur

On dit alors que la multiplication a la priorité sur l'addition et que la multiplication et l'addition ont la priorité sur l'affectation.

Si nous voulons forcer l'ordinateur à commencer par un opérateur avec une priorité plus faible, nous devons (comme en mathématiques) entourer le terme en question par des parenthèses.

Exemple

Dans l'instruction:


X = 2*(A+3)*B+4*C;
l'ordinateur évalue d'abord l'expression entre parenthèses, ensuite les multiplications, ensuite l'addition et enfin l'affectation. (En reprenant les valeurs de l'exemple ci-dessus, le résultat sera 164)

Entre les opérateurs que nous connaissons jusqu'ici, nous pouvons distinguer les classes de priorités suivantes:

Classes de priorités

Priorité 1 (la plus forte):

()
Priorité 2:
! ++ --
Priorité 3:
* / %
Priorité 4:
+ -
Priorité 5:
< <= > >=
Priorité 6:
== !=
Priorité 7:
&&
Priorité 8:
||
Priorité 9 (la plus faible):
= += -= *= /= %=

Evaluation d'opérateurs de la même classe

--> Dans chaque classe de priorité, les opérateurs ont la même priorité. Si nous avons une suite d'opérateurs binaires de la même classe, l'évaluation se fait en passant de la gauche vers la droite dans l'expression.

<-- Pour les opérateurs unaires (!,++,--) et pour les opérateurs d'affectation (=,+=,-=,*=,/=,%=), l'évaluation se fait de droite à gauche dans l'expression.

Exemples

L'expression 10+20+30-40+50-60 sera évaluée comme suit:

10+20

==>
30










30+30
==>
60










60-40
==>
20










20+50
==>
70










70-60
==>
10

Pour A=3 et B=4, l'expression A *= B += 5 sera évaluée comme suit:

Pour A=1 et B=4, l'expression !--A==++!B sera évaluée comme suit:

Les parenthèses

Les parenthèses sont seulement nécessaires si nous devons forcer la priorité, mais elles sont aussi permises si elles ne changent rien à la priorité. En cas de parenthèses imbriquées, l'évaluation se fait de l'intérieur vers l'extérieur.

Exemple

En supposant à nouveau que A=5, B=10, C=1 l'expression suivante s'évaluera à 134:


X = ((2*A+3)*B+4)*C

Attention!

Observez la priorité des opérateurs d'affectation :

	X *= Y + 1          X = X * (Y + 1)
	X *= Y + 1          X = X * Y + 1 

Retour Suite Index