共用方式為


Visual Basic 中的運算子優先順序

當運算式中出現數個運算時,會以稱為「運算子優先順序」(Operator Precedence) 的預先決定順序來評估及解析每個運算部分。

優先順序規則

當運算式含有來自於一個以上分類的運算子時,則會按照下列規則進行評估。

  • 算術和串連運算子優先順序如下節所述,其優先順序都高於比較運算子、邏輯運算子和位元運算子。

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

  • 邏輯和位元運算子優先順序如下節所述,其優先順序都低於算術運算子、串連運算子和比較運算子。

  • 優先順序相同的運算子,是按照其在運算式中的位置由左至右評估。

優先順序

運算子會按照下列優先順序進行評估:

fw84t893.collapse_all(zh-tw,VS.110).gif等候運算子

等候

fw84t893.collapse_all(zh-tw,VS.110).gif算術和串連運算子

乘冪 (^)

一元識別和反轉正負號 (+、–)

乘法和浮點數除法 (*、/)

整數相除 (\)

模數算術 (Mod)

加法和減法 (+, –)

字串串連 (&)

算術位元移位 (<<、>>)

fw84t893.collapse_all(zh-tw,VS.110).gif比較運算子

所有比較運算子 (=、<>、<、<=、>、>=、Is、IsNot、Like、TypeOf...Is)

fw84t893.collapse_all(zh-tw,VS.110).gif邏輯和位元運算子

否定 (Not)

結合 (And、AndAlso)

內含分離 (Or、OrElse)

獨佔分離 (Xor)

fw84t893.collapse_all(zh-tw,VS.110).gif註解

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

字串串連運算子 (&) 不是算術運算子,但其優先順序與算術運算子相同。

Is 和 IsNot 運算子是物件參考比較運算子。 它們不會比較兩個物件的值,檢查的目的只是判斷兩個物件變數是否參考同一個物件執行個體。

順序關聯性

當運算式中出現優先順序相同的運算子時 (例如乘法和除法),編譯器會依運算出現順序由左至右評估。 下列範例將說明這點。

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 指定該順序時,運算的結果會完全相同。 n1 和 n2 兩者的結果都是 3。 相比之下,n3 的結果是 48,因為括號會強制編譯器優先求得 8 / 4 的值。

基於這種行為,Visual Basic 中的運算子就稱為「左關聯」(Left Associative)。

覆寫優先順序和關聯性

您可以使用括號,強制優先評估運算式的某部分。 這樣可以同時覆寫優先順序和左順序關聯性。 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.
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.

請參閱

參考

= 運算子 (Visual Basic)

Is 運算子 (Visual Basic)

IsNot 運算子 (Visual Basic)

Like 運算子 (Visual Basic)

TypeOf 運算子 (Visual Basic)

Await 運算子 (Visual Basic)

運算子 (依功能排列) (Visual Basic)

概念

Visual Basic 中的運算子和運算式