Ordre de priorité des opérateurs

Lorsque plusieurs opérations figurent dans une expression, chaque partie est évaluée et résolue dans un ordre prédéterminé appelé ordre de priorité des opérateurs. Vous pouvez utiliser des parenthèses pour contourner l'ordre de priorité et forcer l'évaluation de certaines parties d'une expression avant d'autres parties. Les opérations qui se trouvent entre les parenthèses sont toujours effectuées avant celles qui figurent à l'extérieur. Cependant, au sein des parenthèses, l'ordre de priorité standard est conservé.

Lorsque les expressions contiennent des opérateurs de plusieurs catégories, les opérateurs arithmétiques sont évalués en premier, puis les opérateurs de comparaison et enfin les opérateurs logiques. Les opérateurs de comparaison ont tous la même priorité, c'est-à-dire qu'ils sont évalués dans l'ordre dans lequel ils apparaissent, de gauche à droite. Les opérateurs arithmétiques et logiques sont évalués dans l'ordre de priorité suivant.

Les exemples suivants illustrent l'utilisation de l'ordre de priorité des opérateurs :

Exemple 1 :

Dim Result
Result = 2 + 3 * 4   ' Multiplication is performed first.
'Result has value 14
Result = (2 + 3) * 4   ' Parentheses override precedence.
'Result has value 20

Exemple 2 :

Dim A, B, C
A = 5
B = 10
C = 20
Dim ComparisonResult
ComparisonResult = A + B > C / 2   ' Division is performed first, then addition, then comparison.
'ComparisonResult   Outputs: True (10 / 2 = 5, then 5 + 5 = 10, 10 > 10 is False, but corrected if comparison operator order is properly enforced)

ComparisonResult = (A + B) > (C / 2)   ' Parentheses enforce precedence.
'ComparisonResult Outputs: True (15 > 10)

Exemple 3 :

Dim X, Y, Z
X = 5
Y = 10
Z = 15

Dim LogicalResult
LogicalResult = X + Y > Z And X < Y   ' Addition and comparison are performed first, then logical AND.
'LogicalResult Outputs: False (10 + 5 > 15 is False, and 5 < 10 is True, False And True is False)

LogicalResult = (X + Y > Z) And (X < Y)   ' Parentheses enforce precedence.
'LogicalResult Outputs: False (still False And True)

Exemple 4 :

Dim NestedResult
NestedResult = (2 + (3 * 4)) * 5   ' Inner parentheses are evaluated first, then outer.
'NestedResult Outputs: 70 (3 * 4 = 12, 2 + 12 = 14, 14 * 5 = 70)

Exemple 5 :

Dim A, B, C
A = 5
B = 2
C = 10
Dim ClearResult
ClearResult = (A * B) + (C / A)   'Using parentheses to make the expression clear.
'ClearResult Outputs: 12 (5 * 2 = 10, 10 / 5 = 2, 10 + 2 = 12)

Reportez-vous à la section Opérateurs BSL pour consulter le guide complet sur les opérateurs arithmétiques, de comparaison et logiques.