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.