VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。

# 优先级

当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。

当表达式包含多种运算符时,首先计算算术运算符优先,然后计算比较运算符其次,最后计算逻辑运算符最后。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符的优先级如下所示:

优先级 类别 运算符
算术运算符
1 乘方 ^
2 取负 -
3 *
3 /
4 四舍五入除/位移 \
5 取模 Mod
6 +
6 -
7 字符串合并 &
比较运算符
8 相等 =
8 大于 >
8 大于等于 >=
8 小于 <
8 小于等于 <=
8 不等于 <>
8 同类对象 Is
逻辑运算符
9 Not
10 And
11 Or
12 异或 Xor
13 逻辑等 Eqv
14 逻辑大于等于(蕴含) Imp

当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。

字符串连接 (&) 运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。Is 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。

# 运算符(+)

计算两个数之和。

result = expression1 + expression2

参数
参数 描述
result 任意数值变量。
expression1 任意表达式。
expression2 任意表达式。
说明

虽然也可以使用+运算符连接两个字符串,但是推荐使用&运算符进行字符串的连接。因为在使用+运算符时,有可能无法确定是做加法还是做字符串连接。

表达式的基本子类型决定了+运算符所做的操作,如下表所示:

如果
两个表达式都是数值 相加
两个表达式都是字符串 连接
一个表达式是数值,另一个表达式是字符串 相加

如果一个表达式或两个表达式都为 Null 表达式,则 result 为 Null。如果两个表达式都为Empty,则 result 为 Integer 子类型。但是如果一个表达式为 Empty,则返回另一个表达式作为 result。

# And 运算符

用于对两个表达式进行逻辑与运算。

result = expression1 And expression2

参数
参数 描述
result 任意数值变量。
expression1 任意表达式。
expression2 任意表达式。
说明

当且仅当两个表达式均为 True,则 result 为 True。如果任一表达式为 False,则 result 为 False。下表说明如何确定 result:

如果 expression1 为 且 expression2 为 则 result 为
TRUE TRUE TRUE
TRUE FALSE FALSE
TRUE Null Null
FALSE TRUE FALSE
FALSE FALSE FALSE
FALSE Null FALSE
Null TRUE Null
Null FALSE FALSE
Null Null Null

And 运算符还对两个数值表达式中位置相同的位执行逐位比较,并根据下表设置 result 中相应的位:

如 expression1 中的位是 且 expression2 中的位是 则 result 为
0 0 0
0 1 0
1 0 0
1 1 1

# 赋值运算符 (=)

赋值给一个变量或。

variable = value

参数
参数 描述
variable 任何变量或可写的属性。
value 任何数值或字符串文字、常数、或表达式。
说明

等号左边的名称可以是一个简单的标量变量或数组的一个元素。等号左边的属性仅可以是那些在运行时可写的属性。

# 比较运算符

用于比较表达式。

result = expression1 comparisonoperator expression2
result = object1 Is object2

参数
| 参数 | 描述 | | ------------------ | ---------------- | | result | 任意数值变量。 | | expression | 任意表达式。 | | comparisonoperator | 任意比较运算符。 | | object | 任意对象名称。 |
说明

Is 运算符具有特殊的比较功能,它不同于下表中的运算符。下表包含一个比较运算符的列表,以及确定 result 为 True, False, 或 Null 的条件。

运算符 描述 如果 ... 则为 True 如果 ... 则为 False 如果 ... 则为 Null
< 小于 expression1 < expression2 expression1 >= expression2 expression1 或 expression2 = Null
<= 小于或等于 expression1 <= expression2 expression1 > expression2 expression1 或 expression2 = Null
> 大于 expression1 > expression2 expression1 <= expression2 expression1 或 expression2 = Null
>= 大于或等于 expression1 >= expression2 expression1 < expression2 expression1 或 expression2 = Null
= 等于 expression1 = expression2 expression1 <> expression2 expression1 或 expression2 = Null
<> 不等于 expression1 <> expression2 expression1 = expression2 expression1 或 expression2 = Null

当比较两个表达式时,您或许不容易确定比较的表达式是作为数值或作为字符串。

下表描述了如何对表达式进行比较、以及比较的结果,它取决于比较的子类型。

如果
两个表达式都是数值 执行数值比较。
两个表达式都是字符串 执行字符串比较。
一个表达式是数值而另一个是字符串 数值表达式小于字符串表达式。
一个表达式是 Empty 而另一个是数值 执行数值比较,使用 0 作为 Empty 表达式。
一个表达式是 Empty 而另一个是字符串 执行字符串比较,使用零长度字符串 ("") 作为 Empty 表达式。
两个表达式都是 Empty 表达式相等。

# 连接运算符 (&)

强制两个表达式进行字符串连接。

result = expression1 & expression2

参数
参数 描述
result 任意变量。
expression1 任意表达式。
expression2 任意表达式。
说明

任一 expression 不是字符串时,它将被转换为 String 子类型。如果两个表达式都为 Null,result 也为 Null。然而,如果仅有一个 expression 为 Null,则它和其他表达式连接时,按零长度字符串("") 处理。任何表达式为 Empty 时也按零长度字符串处理。

# 除运算符 (/)

两个数值相除并返回以浮点数表示的结果。

result = number1/number2

参数
参数 描述
result 任意数值变量。
number1 任意数值表达式。
number2 任意数值表达式。
说明

如果一个或两个表达式为 Null 表达式,result 为 Null。任何表达式为 Empty 时,则按 0 处理.

# Eqv 运算符

执行两个表达式的逻辑等价运算。

result = expression1 Eqv expression2

参数
参数 描述
result 任意数值变量。
expression1 任意表达式。
expression2 任意表达式。
说明

如果任一表达式为 Null,则 result 也为 Null。当两个表达式都不为 Null 时,则 result 的值根据下表确定:

如果 expression1 为 且 expression2 为 result 为
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE TRUE

Eqv 运算符执行两个数值表达式相应位的逐位比较,并按下表设置 result 相应位:

如 expression1 中的位是 且 expression2 中的位是 result 为
0 0 1
0 1 0
1 0 0
1 1 1

# 幂运算符 (^)

计算数的指数次方。

result = number^exponent

参数
参数 描述
result 任意数值变量。
number 任意数值表达式。
exponent 任意数值表达式。
说明

仅当 exponent 参数为整数时,Number 参数才可为负值。如果单个表达式中有多个指数运算,则 ^ 运算符按从左到右的顺序执行。

如果 number 或 exponent 为 Null 表达式,则 result 值也为 Null。

# Imp 运算符

对两个表达式进行逻辑蕴涵运算。

result = expression1 Imp expression2

参数
部分 描述
result 任意数值变量。
expression1 任意表达式。
expression2 任意表达式。
说明

下表显示如何确定 result 的取值:

如果 expression1 为 且 expression2 为 则 result 为
TRUE TRUE TRUE
TRUE FALSE FALSE
TRUE Null Null
FALSE TRUE TRUE
FALSE FALSE TRUE
FALSE Null TRUE
Null TRUE TRUE
Null FALSE Null
Null Null Null

Imp 运算符执行两个数值表达式相应位的逐位比较,并按下表设置 result 相应位:

如 expression1 中的位是 且 expression2 中的位是 则 result 为
0 0 1
0 1 1
1 0 0
1 1 1

# 整除运算符 ()

两个数相除并返回以整数形式表示的结果。

result = number1\number2

参数
参数 描述
result 任意数值变量。
number1 任意数值表达式。
number2 任意数值表达式。
说明

在除法操作前,数值表达式四舍五入为 Byte、Integer 或 Long 子类型表达式。 如果任何表达式为 Null,result 也是 Null。任何表达式为 Empty 时,则按 0 处理。

# Is 运算符

比较两个对象引用变量。

result = object1 Is object2

部分 描述
result 任意数值变量。
object1 任意对象名。
object2 任意对象名。
说明

如果 object1 和 object2 都引用同一个对象,则 result 为 True;否则 result 为 False。可以使用许多方法使两个变量引用同一个对象。 在下列代码中,使 A 引用的对象与 B 的对象相同:

Set A = B

在下列代码中使 A 与 B 引用的对象与 C 的对象相同:

Set A = C Set B = C

# Mod 运算符

两个数值相除并返回其余数。

result = number1 Mod number2

参数
参数 描述
result 任意数值变量。
number1 任意数值表达式。
number2 任意数值表达式。
说明

模数或余数。运算符执行 number1 除以 number2 操作(浮点数四舍五入为整数)并只返回余数作为 result。例如,在下面的表达式中, A(为 result)等于 5。

A = 19 Mod 6.7

如果任一表达式为 Null,则 result 也为 Null。任一表达式为 Empty 时按 0 来处理。

# 乘法算符 (*)

两个数相乘。

result = number1*number2

参数
参数 描述
result 任意数值变量。
number1 任意数值表达式。
number2 任意数值表达式。
说明

如果一个或两个表达式为 Null 表达式,result 为 Null。如果一个表达式为 Empty,则按 0 处理。

# Not 运算符

对表达式执行逻辑非运算。

result = Not expression

参数

部分 描述
result 任意数值变量。
expression 任意表达式。
说明

下表显示如何确定 result 的值:

如果 expression 为 则 result 为
TRUE FALSE
FALSE TRUE
Null Null

此外,Not 运算符将变量的位取反,并按下表设置 result 的相应位:

expression 中的位 result 中的位
0 1
1 0

# Or 运算符

对两个表达式进行逻辑“或”运算。

result = expression1 Or expression2

参数
参数 描述
result 任意数值变量。
expression1 任意表达式。
expression2 任意表达式。
说明

当且仅当两个表达式均为 True,则 result 为 True。如果任一表达式为 False,则 result 为 False。下表说明如何确定 result:

如果 expression1 为 且 expression2 为 则 result 为
TRUE TRUE TRUE
TRUE FALSE TRUE
TRUE Null TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
FALSE Null Null
Null TRUE TRUE
Null FALSE Null
Null Null Null

And 运算符还对两个数值表达式中位置相同的位执行逐位比较,并根据下表设置 result 中相应的位:

如 expression1 中的位是 且 expression2 中的位是 则 result 为
0 0 1
0 1 1
1 0 1
1 1 0

# 减运算符 (-)

计算两个数值的差或表示数值表达式的负值。

result = number1-number2

参数
参数 描述
result 任意数值变量。
number1 任意数值表达式。
number2 任意数值表达式。
说明

在语法 1 中,- 运算符是用于计算两个数值差值的算术减法运算符。在语法 2 中,- 运算符用作单目求反运算符,表示表达式的负数。

如果一个或两个表达式都是 Null 表达式,则 result 为 Null。如果某个表达式为 Empty,则按 0 值处理。

# Xor 运算符

对两个表达式进行逻辑“异或”运算。

result = expression1 Xor expression2

参数
参数 描述
result 任意数值变量。
expression1 任意表达式。
expression2 任意表达式。
说明

如果有且仅有一个表达式为 True,则 result 为 True。但是,如果任意一个表达式为 Null,则 result 也为 Null。若两个表达式均不为 Null,则根据下表确定 result:

如果 expression1 为 expression2 为 则 result 为
TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

Xor 运算符还可以对两个数值表达式中位置相同的位执行逐位比较,并根据下表设置 result 中相应的位:

如果 expression1 中的位是 expression2 中的位是 则 result 为
0 0 0
0 1 1
1 0 1
1 1 0