以下内容在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
我需要不同行为的逻辑推理。但在其他语言中,它是直接的,并将按预期工作
答案 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
可以推断其他数据类型,例如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"]'