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
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 |