運算子優先順序決定表示式中術語的分組。這會影響表示式的評估方式。某些運算子的優先順序高於其他運算子,則會被優先運算; 例如,乘法運算子比加法運算子具有更高的優先順序:
例如,表示式:x = 7 + 3 * 2
; 在這裡,x
被賦值為13
,而不是20
,因為運算子*
的優先順序高於+
,所以它先乘以3 * 2
,然後加上7
,所以最後結果為:13
。
在這裡,優先順序最高的操作符出現在表頂部,最低優先順序的操作符出現在底部。 在表示式中,更高優先順序的運算子將首先被評估(計算)。
運算子 | 描述 |
---|---|
Await |
最高階 |
冪(^ ) |
|
一元識別符號和否定(+ ,- ) |
|
乘法和浮點除法(* , / ) |
|
整數除(\ ) |
|
模數運算(Mod ) |
|
算術位移(<< ,>> ) |
|
所有比較運算子(= ,<> ,< ,<= ,> ,>= ,Is ,IsNot ,Like ,TypeOf , ... , Is ) |
|
否定(Not ) |
|
連線(And , AndAlso ) |
|
包含分離(OR ,OrElse ) |
|
互斥或(XOR ) |
以下範例以簡單的方式演示運算子優先順序,檔案:operators_precedence.vb -
Module operators_precedence
Sub Main()
Dim a As Integer = 20
Dim b As Integer = 10
Dim c As Integer = 15
Dim d As Integer = 5
Dim e As Integer
e = (a + b) * c / d ' ( 30 * 15 ) / 5
Console.WriteLine("Value of (a + b) * c / d is : {0}", e)
e = ((a + b) * c) / d ' (30 * 15 ) / 5
Console.WriteLine("Value of ((a + b) * c) / d is : {0}", e)
e = (a + b) * (c / d) ' (30) * (15/5)
Console.WriteLine("Value of (a + b) * (c / d) is : {0}", e)
e = a + (b * c) / d ' 20 + (150/5)
Console.WriteLine("Value of a + (b * c) / d is : {0}", e)
Console.ReadLine()
End Sub
End Module
執行上面範例程式碼,得到以下結果 -
F:\worksp\vb.net\operators>vbc operators_precedence.vb
F:\worksp\vb.net\operators>operators_precedence.exe
Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50