+运算符在vbscript中不同情况下的用法

Usage of + operator in differents situations in vbscript

vbscript 中下面的值是多少

1)x=1+"1" 2)x="1"+"1" 3)x=1+"mulla" Note:In 以上所有三种情况,我将第一个变量用作字符串或整数,第二个变量始终用作字符串。

大小写 1:Acting 作为数字并在操作期间自动转换为数字

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:Acting 作为字符串,在操作期间没有转换为数字失败

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:Acting 作为字符串并在其传递的操作期间显式转换为数字

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

我需要不同行为的逻辑原因。但在其他语言中它很简单,并且会按预期工作

参考: Addition Operator (+) (VBScript)

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

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

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

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

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

我同意 @thomas-inzina but the 的大部分内容,所以就这样吧。

正如 @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"]'