Se in un'espressione vengono eseguite più operazioni, ogni parte viene valutata e risolta in un ordine predeterminato in base alla precedenza degli operatori. È possibile utilizzare le parentesi per modificare l'ordine di precedenza e forzare il calcolo di alcune parti di un'espressione prima di altre. Le operazioni all'interno delle parentesi vengono sempre eseguite prima di quelle al loro esterno. All'interno delle parentesi, tuttavia, viene rispettata la precedenza standard degli operatori.
Se le espressioni contengono operatori appartenenti a più categorie, gli operatori aritmetici vengono valutati per primi, gli operatori di confronto vengono valutati successivamente e gli operatori logici vengono valutati per ultimi. Gli operatori di confronto hanno tutti la stessa precedenza, ovvero vengono valutati nell'ordine in cui appaiono, da sinistra a destra. Gli operatori aritmetici e logici vengono valutati in base al seguente ordine di precedenza.
Nell'esempio seguente viene illustrato l'uso della precedenza degli operatori.
Esempio 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
Esempio 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)
Esempio 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)
Esempio 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)
Esempio 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)
Per una guida completa degli operatori aritmetici, di confronto e logici, vedere Operatori BSL.