Visual Basic 运算符优先级
运算符优先级决定表达式中术语的分组。这会影响表达式的评估方式。某些运算符的优先级高于其他运算符,则会被优先运算; 例如,乘法运算符比加法运算符具有更高的优先级:
例如,表达式:x = 7 + 3 * 2; 在这里,x 被赋值为 13,而不是 20,因为运算符 * 的优先级高于 +,所以它先乘以 3 * 2,然后加上 7,所以最后结果为:13
在这里,优先级最高的操作符出现在表顶部,最低优先级的操作符出现在底部。 在表达式中,更高优先级的运算符将首先被评估(计算)。
| 运算符 | 描述 |
|---|---|
| Await | 最高级 |
| 幂(^) | |
| 一元标识符和否定(+,-) | |
| 乘法和浮点除法(*, /) | |
| 整数除() | |
| 模数运算(Mod) | |
| 算术位移(<<,>>) | |
| 所有比较运算符(=,<>,<,<=,>,>=,Is,IsNot,Like,TypeOf, …, Is) | |
| 否定(Not) | |
| 连接(And, AndAlso) | |
| 包含分离(OR,OrElse) | |
| 异或(XOR) |
实例
以下实例以简单的方式演示运算符优先级:
Module operators_precedenceSub Main()Dim a As Integer = 20Dim b As Integer = 10Dim c As Integer = 15Dim d As Integer = 5Dim e As Integere = (a + b) * c / d ' ( 30 * 15 ) / 5Console.WriteLine("Value of (a + b) * c / d is : {0}", e)e = ((a + b) * c) / d ' (30 * 15 ) / 5Console.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 SubEnd Module
结果如下:
Value of (a + b) * c / d is : 90Value of ((a + b) * c) / d is : 90Value of (a + b) * (c / d) is : 90Value of a + (b * c) / d is : 50