Wenn mehrere Vorgänge in einem Ausdruck auftreten, wird jeder Teil ausgewertet und in einer vordefinierten Reihenfolge aufgelöst, die als Operatorrangfolge bezeichnet wird. Sie können Klammern verwenden, um die Rangfolge zu überschreiben und zu erzwingen, dass einige Teile eines Ausdrucks vor anderen Teilen ausgewertet werden. Vorgänge in Klammern werden immer vor denen außerhalb der Klammern durchgeführt. Innerhalb der Klammern wird jedoch die Standardoperatorrangfolge beibehalten.
Wenn Ausdrücke Operatoren aus mehreren Kategorien enthalten, werden zuerst arithmetische Operatoren ausgewertet, als Nächstes Vergleichsoperatoren und zuletzt logische Operatoren. Vergleichsoperatoren haben alle gleiche Priorität. Das heißt, sie werden in der Reihenfolge ihres Auftretens von links nach rechts ausgewertet. Arithmetische und logische Operatoren werden in der folgenden Rangfolge ausgewertet.
Das folgende Beispiel veranschaulicht die Verwendung der Operatorrangfolge:
Beispiel 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
Beispiel 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)
Beispiel 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)
Beispiel 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)
Beispiel 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)
Eine vollständige Dokumentation zu arithmetischen, Vergleichs- und logischen Operatoren finden Sie unter BSL-Operatoren.