请问这段代码为什么会“溢出”?

来源:百度知道 编辑:UC知道 时间:2024/06/29 01:42:51
将数值序列1、1、2、3、5、8、13、21、……存入数组中。共存50个数。

Option Base 1
Private Sub Form_Load()
Dim Arr(50) As Integer
Arr(1) = 1
Arr(2) = 1
For k = 3 To 50
Arr(k) = Arr(k - 1) + Arr(k - 2)
Next k
End Sub

但是我把这些代码输入vb中,却出现“溢出”,请问为什么? 应该如何解决? 谢谢!

Integer范围是-32768~32767
你这里超出他的范围了,所以溢出
可将Dim Arr(50) As Integer改为
Dim Arr(50) As Variant

Private Sub Form_Load()
Dim Arr(50) As Integer
Arr(1) = 1
Arr(2) = 1
For k = 3 To 50
Arr(k) = Arr(k - 1) + Arr(k - 2)
Next k
End Sub

按照你的这段代码执行的结果 Arr(50) 的值等于 125862690256,而Integer的允许范围为-32767 到 32767,你说这样能不溢出吗?