共用方式為


Visual Basic 中的運算符優先順序

表達式中發生數個作業時,會以預先決定的順序評估並解析每個部分,稱為 運算符優先順序

優先順序規則

當表達式包含來自多個類別的運算子時,會根據下列規則進行評估:

  • 算術和串連運算符具有下一節所述的優先順序順序,且優先順序都高於比較、邏輯和位運算符。 優先順序越高,表示會先評估這些運算子。

  • 所有比較運算子的優先順序都相等,且優先順序都高於邏輯和位運算符,但優先順序低於算術和串連運算符。

  • 邏輯和位運算符具有下一節所述的優先順序,且優先順序都低於算術、串連和比較運算符。

  • 優先順序相等的運算符會依表達式中出現的順序,由左至右評估。

優先順序順序

運算子會依下列優先順序進行評估。 最先列出的運算子具有較高的優先順序,並在稍後列出的運算子之前進行評估:

1. 等待操作員

等待

2. 算術運算子和串聯運算子

指數(^

一元身份和否定 (+

乘法和浮點除法 (*/

整數除法 (\

模組化算術 (Mod

加法和減法 (+

字串串連 (&

算術位移位 (<<>>

3. 比較運算子

所有比較運算子(=<><<=>>=IsIsNotLike...) TypeOfIs

4. 邏輯運算子和位元運算子

否定 (Not

結合 (AndAndAlso

包容性分離 (OrOrElse

獨家解禁 (Xor

評論

運算子 = 只是相等比較運算符,而不是指派運算符。

字串串連運算符 (&) 不是算術運算符,但優先順序會與算術運算符分組。

IsIsNot 運算子是對象參考比較運算元。 它們不會比較兩個 物件的值;它們只會檢查兩個物件變數是否參考相同的物件實例。

關聯性

當等優先順序的運算符一起出現在表達式中時,例如乘法和除法,編譯程式會在從左至右遇到每個作業時評估每個作業。 下列範例說明這點。

Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)

第一個表達式會評估除法 96 / 8(結果為 12),然後評估除法 12 / 4,結果為 3。 由於編譯程式會從左至右評估的作業 n1 ,因此當明確指出 n2該順序時,評估會相同。 n1n2 都有三個結果。 相較之下, n3 結果為 48,因為括弧會強制編譯程式先評估 8 / 4。

由於這種行為,運算符在Visual Basic中會 保持關聯

覆寫優先順序和關聯性

您可以使用括號來強制表達式的某些部分在其他人之前進行評估。 這可以覆寫優先順序和左關聯性。 Visual Basic 一律會執行在外部括弧中括住的作業。 不過,在括弧內,除非您在括弧內使用括弧,否則它會維持一般優先順序和關聯性。 下列範例說明這點。

Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line. Division and multiplication (/, *) have higher
' precedence than addition and subtraction (+, -), so c / d * e
' is evaluated first, then the addition and subtraction from left to right.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.

另請參閱