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 ==> 4Ensuite, il fait l'addition des trois résultats obtenus:
10+30+4 ==> 44A 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:
Exemple
En supposant à nouveau que A=5, B=10, C=1 l'expression suivante s'évaluera à 134:
X = ((2*A+3)*B+4)*C
Observez la priorité des opérateurs d'affectation :
X *= Y + 1 X = X * (Y + 1) X *= Y + 1 X = X * Y + 1