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

时间:2016-11-07 12:59:26

标签: vbscript hp-uft

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

代码:

False

输出:

print 40 = "40"

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

1 个答案:

答案 0 :(得分:6)

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

比较时

40 = "40"

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

40 = CInt("40")

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

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

a = CInt(b)

有用的链接