尝试在HP-UFT中运行时,下面的VBScript代码让我感到困惑,因为第一个语句打印True
而不是False
(这似乎不合逻辑),而第二个语句打印{{1 (似乎合乎逻辑)
代码:
False
输出:
print 40 = "40"
a = 40
b = "40"
print a = b
答案 0 :(得分:6)
完全符合逻辑( cough ),VBScript中只有一种数据类型,即Variant
。但是,VBScript可以处理Variant
数据类型的许多不同子类型。
比较时
40 = "40"
VBScript隐式将String
子类型转换为Integer
子类型,并比较与执行以下显式转换相同的结果;
40 = CInt("40")
如果你已经定义了你的变体,但是如果执行上下文适合,VBScript只会尝试隐式转换它们(当它适合时有点模糊,在某些情况下是直接错误 - 请参阅Ref)
为避免这种情况,请在必要时使用显式转换。
a = CInt(b)