VB 一段程序

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:13:53
我是一个VB编程初学者,碰到这样的一个问题,有这样的一段代码,我打入VB中,运行一下,计算机计算的结果和我计算的结果不一样,不知道为什么?
Private Sub Commanda1_Click()
A=InputBox("A=","输入")
B=InputBox("B=","输入")
MAX=(A+B)/2+ABS(A-B)/2
Print "MAX=";MAX
End Sub

输入2和5,我自己计算的结果是5,运行程序得到的结果是14.
很奇怪,这个运算式这么简单,直接算都可以算出来,为什么计算机计算的结果不一样呢?
问题出在哪儿呢?这就是书上的一段代码,只可能我错了,我错在哪儿呢?希望内行指点一下,万分感谢:)
嗯,万分谢谢各位.
inputbox()函数返回值是字符串类型的话,为什么还计算出结果为14?
那不是MAX=25/2+ABS(2-5)/2,这不就是一个字符串了.
因为是初学,问的问题幼稚,见笑了

呵呵
你的输入是个字符串。而不是一个数值。这样第一个式子算出实际是 25/2 而不是 7/2,你用 CInt 函数先把数值转换为整数即可(浮点数用 CDbl)。而第二个式子由于字符串不可能有减法,而实际又是个数字,VB 把它当成数值计算了。

注意:“+”可以用来做字符串连接,也可以做数值加法,如果你确定做字符串连接,应用“&”运算符,否则,应确保所有变量都是数值型的。

因为inputbox返回的是字符串 所以a+b等于25
你需要val(inputbox(“”))来转换数值

Private Sub Commanda1_Click()
Dim A As Double,B As Double,Max As Double

A=CDbl(InputBox("A=","输入"))
B=CDbl(InputBox("B=","输入"))
MAX=(A+B)/2+ABS(A-B)/2
Print "MAX=";CStr(MAX)

'必须转换类型为数字;否则为字符串A+B(相当于字符串连接了:25),A-B(-3)
End Sub

另外 Max可以这样写嘛
Dim A As Double,B As Double,Max As Double
A=CDbl(InputBox("A=","输入"))
B=CDbl(InputBox("B=","输入"))

If A>B Then Max=A Else Max=B
Print "Max=";Max

Commanda1 这里错了,多了一个A
另外,max是vb保留字
你换个变量名就行了,试试。

问题在于A,B没有定义数据类型。
Inputbox返回的是String类型。输入2,5后,(A+B)执行了字符串连接运算,而不是数字的加法