codecamp

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

运算符优先级

  1. ^(幂)
  2. + -(一元正负)
  3. * / \(乘除整除)
  4. Mod
  5. + -(加减)
  6. &(字符串连接)
  7. = < > <= >= <> Like Is IsNot(比较)
  8. Not(位/逻辑取反)
  9. And AndAlso
  10. Or OrElse Xor
  11. If 三元
  12. = *= /= \= += -= ^=&=(赋值)

记不住?用括号最保险

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

Visual Basic (VB) 注释写法大全(单行/多行/文档注释)
Visual Basic (VB) 条件语句 if 详解
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }