下面的VBScript代码试图在HP-UFT中运行,这让我感到困惑,因为第一条语句打印的是True而不是False (这似乎不符合逻辑),而第二条语句则打印False (这似乎是逻辑的)。
代码:
print 40 = "40"
a = 40
b = "40"
print a = b输出:
True
False发布于 2016-11-07 13:32:24
这是完全符合逻辑的(咳嗽),在VBScript中只有一种数据类型,那就是Variant。但是,VBScript可以处理Variant数据类型的许多不同的子类型。
当你比较
40 = "40"VBScript隐式地将String子类型转换为Integer子类型,并比较结果,这与执行以下显式转换相同;
40 = CInt("40")但是,如果您已经定义了您的变体,那么如果执行上下文合适,VBScript只会尝试隐式转换它们(当它适合的时候,它有点模糊,在某些情况下是一个直接的bug --参见https://blogs.msdn.microsoft.com/ericlippert/2004/07/30/typing-hard-can-trip-you-up/)。
为了避免这种情况,在必要时使用显式转换。
a = CInt(b)有用的链接
https://stackoverflow.com/questions/40465831
复制相似问题