VB中输入三个数,排序后从小到大输出,不知道错在哪,请高人指教!

Dim a, b, c, d As Integer
a = Text1.Text
b = Text2.Text
c = Text3.Text

If a > b Then
d = a: a = b: b = d
End If

If b > c Then
d = b: b = c: c = d
End If

If a > b Then
d = a: a = b: b = d
End If

Label1.Caption = a & "," & b & "," & c
我想知道这个算法的错误在哪,其他正确的算法不用回答,我已经知道了。

第1个回答  2018-12-04
去找老师帮忙追问

我相信网上牛人多

第2个回答  2018-12-04
Dim a, b, c, d As Integer
改为
Dim a As Integer, b As Integer, c As Integer, d As Integer追问

你是认真的吗,伙子?

追答

我当然是认真的,在VB6中,Dim a, b, c, d As Integer 相当于
Dim a
Dim b
Dim c
Dim d As Integer
也就是说a、b、c并不是你预期的Integer型,而是默认的Variant型。只有d才是Integer型。
此外,文本框的Text属性本身是String型,即使文本框中输入的是数字,它也是String型,这样的话Variant型的a、b、c分别赋值为Text1、Text2、Text3的Text属性后,它们也等价于String型,这样它们之间就会按字符串来比较大小(而不是按数字),比如"123">"4"的结果将会是False!这样整个排序过程就都不正常了!
所以正确的变量声明方法为:
Dim a As Integer, b As Integer, c As Integer, d As Integer
顺便说一下,这是初学者最容易犯的错误,甚至一些大学里教VB的老师也是这样教的(Dim a, b, c, d As Integer这样的声明方法大多数情况下并不会造成错误,特殊情况下才会引起程序逻辑错误,所以一般人不太注意)

本回答被网友采纳