Skip to content

比较运算符

用于比较表达式并返回 Boolean 结果。

语法:

result = expression1 comparisonoperator expression2
result = object1 Is object2
result = string Like pattern

result
任意数值变量。
expression
任意表达式。
comparisonoperator
<<=>>==<> 中的任意一个。
object
任意对象引用。
string
任意字符串表达式。
pattern
任意字符串表达式或字符范围。

下表列出了比较运算符以及确定 resultTrueFalseNull 的条件:

运算符True 如果False 如果Null 如果
< (小于)expression1 < expression2expression1 >= expression2expression1expression2 = Null
<= (小于或等于)expression1 <= expression2expression1 > expression2expression1expression2 = Null
> (大于)expression1 > expression2expression1 <= expression2expression1expression2 = Null
>= (大于或等于)expression1 >= expression2expression1 < expression2expression1expression2 = Null
= (等于)expression1 = expression2expression1 <> expression2expression1expression2 = Null
<> (不等于)expression1 <> expression2expression1 = expression2expression1expression2 = Null

INFO

IsLike 运算符有各自专用的比较语义,单独成文。

= 符号也是赋值运算符(*variable* = *expression*)。上下文——= 出现在表达式中还是语句开头——决定了使用哪种含义;无需显式选择。

比较两个表达式时,判断它们是作为数字还是字符串比较可能并不明显。下表显示了表达式的比较方式,或当任一表达式不是 Variant 时的结果:

如果
两个表达式都是数值类型(ByteBooleanIntegerLongLongLongSingleDoubleDateCurrency执行数值比较。
两个表达式都是 String执行字符串比较。
一个表达式是数值类型,另一个是 Variant 且是或可以是数字执行数值比较。
一个表达式是数值类型,另一个是无法转换为数字的字符串 Variant发生 Type Mismatch 错误。
一个表达式是 String,另一个是除 Null 外的任意 Variant执行字符串比较。
一个表达式是 Empty,另一个是数值数据类型执行数值比较,Empty 表达式使用 0。
一个表达式是 Empty,另一个是 String执行字符串比较,Empty 表达式使用 ""

如果 expression1expression2 都是 Variant 表达式,其底层类型决定比较方式:

如果
两个 Variant 表达式都是数值执行数值比较。
两个 Variant 表达式都是字符串执行字符串比较。
一个 Variant 表达式是数值,另一个是字符串数值表达式小于字符串表达式。
一个 Variant 表达式是 Empty,另一个是数值执行数值比较,Empty 表达式使用 0。
一个 Variant 表达式是 Empty,另一个是字符串执行字符串比较,Empty 表达式使用 ""
两个 Variant 表达式都是 Empty表达式相等。

SingleDouble 比较时,Double 会被舍入到 Single 的精度。如果 CurrencySingleDouble 比较,SingleDouble 会被转换为 Currency。对于 Currency,小于 .0001 的小数值可能丢失,这可能导致两个实际不同的值比较结果为相等。

字符串比较受模块的 Option Compare 设置控制——Binary(默认;区分大小写,按序比较)或 Text(不区分大小写,受区域设置影响)。

示例

vb
Dim MyResult, Var1, Var2
MyResult = (45 < 35)            ' Returns False.
MyResult = (45 = 45)            ' Returns True.
MyResult = (4 <> 3)             ' Returns True.
MyResult = ("5" > "4")          ' Returns True.

Var1 = "5": Var2 = 4            ' Initialize variables.
MyResult = (Var1 > Var2)        ' Returns True (string compared as string).

Var1 = 5: Var2 = Empty
MyResult = (Var1 > Var2)        ' Returns True (Empty treated as 0).

Var1 = 0: Var2 = Empty
MyResult = (Var1 = Var2)        ' Returns True.

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有