VB程序,请高手指教下!

Private Sub Command1_Click()
Dim x As Integer
x = 0
a = InputBox("请输入第一个数字a的值")
a = Val(a)
b = InputBox("请输入第二个数字b的值")
b = Val(b)
x = InputBox("请输入第三个数字x的值")
x = Val(x)
a = a + b + x
Print a
End Sub
如果依次输入1,2,3这个输出得结果是6
但去掉 a = Val(a), b = Val(b), x = Val(x)而得到得结果是15,我不明白为什么.Intputbox输入的不是字符吗?应该显示1 2 3才对啊!

楼上的都没说到本质。他确实是错了,但为什么不是楼主所说的123,而是15呢?
inputbox返回的是字符串这个楼主已经知道,所以楼主才会以为结果是123。但实际上在定义变量的时候,只定义了x为整型数据,所以,a,b就是变体型。用inputbox语句赋值以后,a,b的类型就被定为字符串了。“+”号两边如果都是字符串,那么结果为将两个字符串连接起来,如果两边有一方是数字,那么进行数字运算。
所以,a+b+x的前面一个“+”运算是字符串的连接,字符串1和2连接的结果为12,后面一个则是算术加法运算,因为定义了x为整型数据,所以,字符串12先转换为数字12,再加上数字3,结果为数字15,再将数字15的值赋给a,这时又转换为字符串15.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-07
input函数返回的是字符类型,如果前面加Val(inputbox(" "))就会强制把它里面的字符内容转化为数值型...
或者用你的a=val(a)也行....
正如你说的:Intputbox输入的不是字符吗?因该是返回的是字符串...
由于先前你的a,b并没有定义:所以属于变体型,用inputbox语句赋值以后,a,b的类型就被定为字符串了。“+”号两边如果都是字符串,那么结果为将两个字符串连接起来,如果两边有一方是数字,那么进行数字运算。

如果都是字符串的话,它们之间你用a=a+b+x行吗?当然也行,因为字符串连接有两种方式,一个是"+",另外一个是"&",结果是15:产生的原因就是前面字符串连接是12 后面碰到数字了,然后12+3=15(这就是由来)
这也告诉我们,对于字符串连接问题,能用"&"地方尽量用"&",当然"+"也可以,但是有的时候可能产生错误...就像这道题!
因此你要达到1,2,3,的效果在这里就只能用a=a&b&x.
第2个回答  2008-04-06
a = a & b & x

才会输出 1 2 3
第3个回答  2008-04-07
a = a & b & x
才会输出 1 2 3
再有a=a+b+x
因a=a 所以a=1
再b+x=23
第4个回答  2008-04-06
Val(x)是对x进行数据类型的转换,如果去掉则会产生异常的
相似回答
大家正在搜