Visual Basic (VB) 运算符大全(算术/比较/逻辑/位/字符串)
在 Visual Basic 中,运算符是一个编程元素,用于指定需要对作数或变量执行的作。例如,Visual Basic 中的加法 (+) 运算符用于对作数执行求和运算。
运算符是什么?
运算符 = 告诉编译器「做什么操作」的符号。
运算符分类
根据微软最新文档,VB 运算符分:
① 算术
② 比较
③ 逻辑/布尔
④ 位运算
⑤ 字符串连接
⑥ 赋值
⑦ 其他(AddressOf/GetType/If 三元等)
算术运算符
| 运算符 | 功能 | 示例 | 结果 | 官方备注 |
|---|---|---|---|---|
+ |
加 | 5 + 2 |
7 | |
- |
减/取负 | 5 - 2 / -x |
3 | 一元负号详见官方「Unary Operators」 |
* |
乘 | 5 * 2 |
10 | |
/ |
除(双精度结果) | 5 / 2 |
2.5 | 始终返回 Double |
\ |
整除(向下取整) | 5 \ 2 / -5 \ 2 |
2 / -3 | 官方强调「向零截断」 |
Mod |
取模 | 5 Mod 2 / -5 Mod 3 |
1 / 1 | 结果符号 = 被除数符号 |
^ |
幂 | 2 ^ 3 |
8 | 返回 Double |
比较运算符(返回 Boolean)
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
= |
相等 | "abc" = "ABC" |
False(默认区分大小写) |
<> |
不等于 | 3 <> 2 |
True |
< > <= >= |
大小比较 | Date.Parse("2025-09-18") > #2024-01-01# |
True |
Like |
模式匹配 | "F" Like "[A-Z]" |
True |
Is / IsNot |
对象引用比较 | If obj Is Nothing Then… |
提示:字符串比较受
Option Compare影响,详见后文。
逻辑/布尔运算符
| 运算符 | 功能 | 短路 | 官方示例 |
|---|---|---|---|
And |
与 | ❌ | True And False → False |
Or |
或 | ❌ | True Or False → True |
Not |
非 | — | Not True → False |
Xor |
异或 | — | True Xor True → False |
AndAlso |
条件与 | ✅ | False AndAlso 1/0=0 → False(后半不执行) |
OrElse |
条件或 | ✅ | True OrElse 1/0=0 → True(后半不执行) |
注意:
And/Or会两边都计算,可用于位运算;AndAlso/OrElse仅用于布尔短路,不能用于位运算。
5. 位运算
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
And |
位与 | 12 And 6 |
4 |
Or |
位或 | 12 Or 6 |
14 |
Not |
位取反 | Not 12 |
-13(补码) |
Xor |
位异或 | 12 Xor 6 |
10 |
提示:位运算操作数必须为整数类型(Byte/Short/Integer/Long)。
6. 字符串连接运算符
| 运算符 | 功能 | 示例 | 官方推荐 | |
|---|---|---|---|---|
& |
强制连接 | "A" & 123 |
A123 | ✅ 推荐 |
+ |
看上下文连接 | "A" + "123" |
A123 | ⚠️ 当一边是数值时可能出错 |
注意:始终使用
&可避免隐式类型转换错误。
赋值与复合赋值运算符
| 运算符 | 等价写法 | 官方版本要求 |
|---|---|---|
= |
x = 5 |
所有版本 |
^= |
x = x ^ 2 |
2005+ |
*= |
x = x * 2 |
2005+ |
/= |
x = x / 2 |
2005+ |
\= |
x = x \ 2 |
2005+ |
+= |
x = x + 1 |
2005+ |
-= |
x = x - 1 |
2005+ |
&= |
s = s & "OK" |
2005+ |
其他官方运算符
| 运算符 | 功能 | 官方示例 |
|---|---|---|
AddressOf |
取过程地址 | Dim del As Action = AddressOf MySub |
Await |
异步等待 | Dim html = Await httpClient.GetStringAsync(url) |
GetType |
得运行时 Type | Dim t = GetType(String) |
TypeOf … Is |
类型判断 | If TypeOf obj Is String Then… |
If 三元 |
兼容 ?: |
Dim y = If(x > 0, x, -x) |
Like |
模式匹配 | "abc" Like "a*" → True |
运算符优先级
^(幂)+ -(一元正负)* / \(乘除整除)Mod+ -(加减)&(字符串连接)= < > <= >= <> Like Is IsNot(比较)Not(位/逻辑取反)And AndAlsoOr OrElse XorIf三元= *= /= \= += -= ^=&=(赋值)
记不住?用括号最保险!
Option Compare 对字符串运算的影响
文件顶部可写:
Option Compare Binary ' 默认,区分大小写
Option Compare Text ' 不区分大小写
示例:
Option Compare Text
Console.WriteLine("abc" = "ABC") ' True
Console.WriteLine("abc" Like "A*") ' True
新增:If 三元运算符(VB 2008+)
语法:If(条件, 真值, 假值)
特点:
- 两个分支类型必须兼容
- 仅计算需要的分支(短路)
Dim score As Integer = 59
Dim level As String = If(score >= 60, "及格", "不及格")
实战:工资计算器
Module PayCalc
Sub Main()
Const HOUR_PAY As Decimal = 45.5D
Console.Write("请输入本月工时:")
Dim hour As Decimal = CDec(Console.ReadLine())
Dim base As Decimal = hour * HOUR_PAY
Dim bonus As Decimal = If(hour > 160, (hour - 160) * HOUR_PAY * 0.2D, 0)
Dim total As Decimal = base + bonus
Console.WriteLine($"基本工资:{base:C}")
Console.WriteLine($"绩效奖金:{bonus:C}")
Console.WriteLine($"实发工资:{total:C}")
End Sub
End Module
运行示例:
请输入本月工时:170
基本工资:¥7,735.00
绩效奖金:¥91.00
实发工资:¥7,826.00
小结口诀
幂乘除整除取模加减连,
比较 Like Is 再逻辑,
三元 If 最后赋值,
括号一撸保平安;
字符串连接用&,
短路布尔AndAlso/OrElse!