+运算符在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
可以推断出其他数据类型,例如 Integer
、String
、DateTime
等,这是可能出现歧义的地方。
这意味着当使用 +
而不是 &
时可能会出现一些意想不到的行为,因为 +
在与字符串一起使用时不仅是一个连接运算符,而且还是一个加法运算符使用数字数据类型时。
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"]'
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
正如 @thomas-inzina 指出的那样,在处理字符串时使用 +
是危险的,并且可能导致歧义,具体取决于您如何组合不同的值。
VBScript 是一种脚本语言,不像它的老大哥 (VB, VBA 和 VB.Net)它是无类型的 仅 (一些关于 VB 和 VBA 也可以是无类型的争论,但这完全是另一个话题) 这意味着它使用一种称为 Variant
的数据类型。 Variant
可以推断出其他数据类型,例如 Integer
、String
、DateTime
等,这是可能出现歧义的地方。
这意味着当使用 +
而不是 &
时可能会出现一些意想不到的行为,因为 +
在与字符串一起使用时不仅是一个连接运算符,而且还是一个加法运算符使用数字数据类型时。
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"]'