在vbscript

时间:2016-07-20 09:02:13

标签: vbscript qtp adsutil.vbs

以下内容在vbscript

中的价值是多少

1)x=1+"1" 2)x="1"+"1" 3)x=1+"mulla" 注意:在以上三种情况中,我使用第一个变量作为字符串或整数,第二个作为字符串始终使用。

案例1:在操作期间作为数字进行数字和自动转换

enter code here
y=inputbox("Enter a numeric value","") Rem I am using 1 as input
x=1
msgbox x+y Rem value is 2
msgbox x*y Rem value is 1

案例2:作为字符串表示,在操作期间没有转换为数字

enter code here
y=inputbox("Enter a numeric value","") Rem I am using 1 as input
x=1
if y= x then
    msgbox "pass"
else
    msgbox "fail"
end if

案例3:在操作期间作为字符串和显式转换为数字传递

enter code here
y=inputbox("Enter a numeric value","") Rem I am using 1 as input
x=1
if Cint(y) = x then
    msgbox "pass"
else
    msgbox "fail"
end if

我需要不同行为的逻辑推理。但在其他语言中,它是直接的,并将按预期工作

2 个答案:

答案 0 :(得分:5)

参考: Addition Operator (+) (VBScript)

虽然您也可以使用+运算符来连接两个字符串,但您应该使用&用于连接的运算符以消除歧义。使用+运算符时,您可能无法确定是否会发生加法或字符串连接。 表达式的类型以下列方式确定+运算符的行为:

如果两个表达式都是数字,那么结果就是添加两个数字。

如果Both表达式都是字符串,则结果是两个字符串的串联。

如果一个表达式是数字而另一个是字符串,那么将抛出Error: type mismatch

使用混合数据类型时,最好使用Type Conversion Function将变量转换为通用数据类型。

答案 1 :(得分:2)

我同意@thomas-inzina has said的大部分内容,但OP has asked for a more detailed explanation也是如此。

使用+使用@thomas-inzina点时使用字符串会很危险并且可能会导致歧义,具体取决于您如何组合不同的值。

VBScript是一种脚本语言,不像它的大兄弟(VB,VBA和VB.Net)它只是无类型的 (关于VB和VBA的一些争论也是如此)能够无类型,但这完全是另一个主题)这意味着它使用一种称为Variant的数据类型。 Variant可以推断其他数据类型,例如IntegerStringDateTime等可能出现歧义的数据类型。

这意味着在使用+而不是&时可能会出现一些意外行为,因为+在使用字符串时不仅是一个连接运算符,而且在工作时也是一个加法运算符数字数据类型。

Dim x: x = 1
Dim y: y = "1"

WScript.Echo x + y

输出:

2
Dim x: x = "1"
Dim y: y = "1"

WScript.Echo x + y

输出:

11
Dim x: x = 1
Dim y: y = 1

WScript.Echo x + y

输出:

2
Dim x: x = 1
Dim y: y = "a"

WScript.Echo x + y

输出:

Microsoft VBScript runtime error (4, 5) : Type mismatch: '[string: "a"]'