使用+;vbscript中不同情况下的运算符

使用+;vbscript中不同情况下的运算符,vbscript,qtp,adsutil.vbs,Vbscript,Qtp,Adsutil.vbs,在vbscript中,下面的值是多少 1)x=1+1 2) x=“1”+“1” 3) x=1+“穆拉” 注意:在以上三种情况下,我使用第一个变量作为字符串或整数,第二个变量始终作为字符串 案例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 i

在vbscript中,下面的值是多少

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

案例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

我需要一个不同行为的逻辑原因。但在另一种语言中,它是直接的,将按预期工作

参考:

虽然也可以使用+运算符连接两个字符串,但应使用&运算符连接以消除歧义。使用+运算符时,可能无法确定是进行加法还是字符串串联。 表达式的类型通过以下方式确定+运算符的行为:

如果两个表达式都是数字,则结果是两个数字相加

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

如果一个表达式是数字,另一个是字符串,则将抛出
错误:类型不匹配


使用混合数据类型时,最好使用

参考资料:

虽然也可以使用+运算符连接两个字符串,但应使用&运算符连接以消除歧义。使用+运算符时,可能无法确定是进行加法还是字符串串联。 表达式的类型通过以下方式确定+运算符的行为:

如果两个表达式都是数字,则结果是两个数字相加

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

如果一个表达式是数字,另一个是字符串,则将抛出
错误:类型不匹配

使用混合数据类型时,最好使用

大部分我都同意,但问题是这样的

正如所指出的,在处理字符串时使用
+
是危险的,并且可能会导致歧义,具体取决于您如何组合不同的值

VBScript是一种脚本语言,与它的老兄弟(VB、VBA和VB.Net)不同,它只有无类型(关于VB和VBA也可以无类型的争论,但这完全是另一个话题),这意味着它使用一种称为
Variant
的数据类型<代码>变量
可以推断出其他数据类型,如
整数
字符串
日期时间
等,这是产生歧义的地方

这意味着您在使用
+
而不是
&
时可能会出现一些意外行为,因为
+
不仅在用于字符串时是一个串联运算符,在处理数字数据类型时也是一个加法运算符

尺寸x:x=1 尺寸y:y=“1” WScript.Echo x+y
输出:

2
尺寸x:x=“1” 尺寸y:y=“1” WScript.Echo x+y
输出:

11
尺寸x:x=1 尺寸y:y=1 WScript.Echo x+y
输出:

2
尺寸x:x=1 Dim y:y=“a” WScript.Echo x+y 输出:

Microsoft VBScript运行时错误(4,5):类型不匹配:'[string:“a”]'
我同意大多数观点,但问题是这样的

正如所指出的,在处理字符串时使用
+
是危险的,并且可能会导致歧义,具体取决于您如何组合不同的值

VBScript是一种脚本语言,与它的老兄弟(VB、VBA和VB.Net)不同,它只有无类型(关于VB和VBA也可以无类型的争论,但这完全是另一个话题),这意味着它使用一种称为
Variant
的数据类型<代码>变量可以推断出其他数据类型,如
整数
字符串
日期时间
等,这是产生歧义的地方

这意味着您在使用
+
而不是
&
时可能会出现一些意外行为,因为
+
不仅在用于字符串时是一个串联运算符,在处理数字数据类型时也是一个加法运算符

尺寸x:x=1 尺寸y:y=“1” WScript.Echo x+y 输出:

2
尺寸x:x=“1” 尺寸y:y=“1” WScript.Echo x+y 输出:

11
尺寸x:x=1 尺寸y:y=1 WScript.Echo x+y 输出:

2
尺寸x:x=1 Dim y:y=“a” WScript.Echo x+y 输出:

Microsoft VBScript运行时错误(4,5):类型不匹配:'[string:“a”]'

谢谢你的回答。但是,是否存在任何逻辑连接,这就是为什么在3种情况下没有连接的原因我更新了我的答案。简而言之,VBScript不会使用
+
运算符将数字转换为字符串。我理解您的答案。。。让我这样说吧。。。。在第一个表达式中,如果我使用TypeName(“1”),它将以字符串的形式给出它。根据您的回答(如果一个表达式是数字,另一个是字符串,则会抛出一个错误:类型不匹配。)对于案例1,它应该抛出一个错误。这是增加,我需要一个逻辑上的结论。这并不像其他人认为的那样是一个基本层面的问题。根据结果,我们知道这是加法。但我们需要找到它为什么会增加。让我用问题中的3或4个案例来更新我的问题,以描述这一点…@mulla您提供的示例案例并不等同。@Lankymart:但我想知道为什么在某些情况下字符串的行为是数字的