尝试在HP-UFT中运行时,下面的VBScript代码使我感到困惑,因为第一个语句打印True而不是False(这似乎不合逻辑),而第二个语句打印False(这看似合乎逻辑)
码:
print 40 = "40"
a = 40
b = "40"
print a = b
Run Code Online (Sandbox Code Playgroud)
输出:
True
False
Run Code Online (Sandbox Code Playgroud)
这是完全合乎逻辑的(咳嗽),VBScript中只有一种数据类型Variant.但是,VBScript可以处理Variant数据类型的许多不同子类型.
当你比较
40 = "40"
Run Code Online (Sandbox Code Playgroud)
VBScript隐式将String子类型转换为子类型,Integer并比较结果与执行以下显式转换相同;
40 = CInt("40")
Run Code Online (Sandbox Code Playgroud)
如果你已经有你的变种定义的VBScript但仅尝试隐式转换他们,如果执行上下文适合(当它适合有点朦胧而在某些情况下,直线上升的错误-见参考文献).
为避免这种情况,请在必要时使用显式转换.
a = CInt(b)
Run Code Online (Sandbox Code Playgroud)