为什么会溢出
vb吧
全部回复
仅看楼主
level 8
tbzp666 楼主
【题目】一个具有10个元素的一维数组a,下标从1到10,每个数组元素的值是随机函数产生的(150,310)之间的随机整数。请用Visual Basic6.0语言编写一个程序求出最大值和最小值的积,并将结果显示在文本框控件Text1中
Dim i As Integer, a(1 To 10) As Integer
Dim Max As Integer, Min As Integer, s As Long
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 159) + 151
Next
Max = a(1): Min = a(1)
For i = 1 To 10
If a(i) > Max Then Max = a(i)
If a(i) < Min Then Min = a(i)
Next
s = Max * Min
Text1.Text = s
运行程序后,Vb说“”实时错误‘6’:溢出”,为什么
2023年05月05日 09点05分 1
level 8
tbzp666 楼主
s = CLng(Max * Min)也不行
2023年05月05日 09点05分 2
s = CLng(Max) * CLng(Min)
2023年07月14日 09点07分
level 15
两个Integer类型进行运算的结果仍然是Integer类型,如果结果超出Integer的范围就会溢出
你可以先把其中一个变量转换成Long型,再进行运算,如CLng(Max)*Min
2023年05月05日 10点05分 3
结果强制转换不行么?
2023年05月05日 11点05分
直接转换是可以的Dim Max As Iong, Min As long, a(1 To 10) As Integer:Max = a(1): Min = a(1) 运算后不行
2023年05月05日 11点05分
@tbzp666 这是顺序的问题,先转换再运算那么结果就是Long型不会出错,先运算再转换那么运算结果是Integer,不等转换就先溢出了
2023年05月05日 11点05分
@初音✨七奈 谢谢,解释清除了
2023年05月05日 11点05分
1