VBScript 中的整数和字符串比较冲突

Integer and String comparison conflict in VBScript

在 HP-UFT 中尝试 运行 时,下面的 VBScript 代码让我感到困惑,因为第一条语句打印 True 而不是 False(这似乎不合逻辑),而第二个打印 False (这似乎合乎逻辑)

代码:

print 40 = "40"

a = 40
b = "40"
print a = b

输出:

True
False

完全符合逻辑(),VBScript 中只有一种数据类型,那就是Variant。然而,VBScript 可以处理 Variant 数据类型的许多不同子类型。

比较时

40 = "40"

VBScript 正在将 String 子类型隐式转换为 Integer 子类型并比较与执行以下显式转换相同的结果;

40 = CInt("40")

如果您已经定义了变体,但是 VBScript 仅在执行上下文适合时才尝试隐式转换它们 (当它适合时有点模糊,在某些情况下是一个直接的错误 - 请参阅 Ref).

为避免这种情况,在必要时使用显式转换。

a = CInt(b)

有用的链接