首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBScript中的整数和字符串比较冲突

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

Stack Overflow用户
提问于 2016-11-07 12:59:26
回答 1查看 3.4K关注 0票数 4

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

代码:

代码语言:javascript
复制
print 40 = "40"

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

输出:

代码语言:javascript
复制
True
False
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 13:32:24

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

当你比较

代码语言:javascript
复制
40 = "40"

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

代码语言:javascript
复制
40 = CInt("40")

但是,如果您已经定义了您的变体,那么如果执行上下文合适,VBScript只会尝试隐式转换它们(当它适合的时候,它有点模糊,在某些情况下是一个直接的bug --参见https://blogs.msdn.microsoft.com/ericlippert/2004/07/30/typing-hard-can-trip-you-up/)。

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

代码语言:javascript
复制
a = CInt(b)

有用的链接

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40465831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档