奇怪的溢出问题,劳烦高人解惑。
刚刚写一个小程序的时候出现一个莫名的溢出错误,为了找出原因于是又写了一段测试代码;
且看我细细说来;
首先我有一个这样的计算:
Function test()
Dim m As Integer
Dim k As Integer
k = 9
m = 3641 * k
Stop
End Function
大家知道,3641×9=32769 大于interger 32768的上限,于是俺就将M改为long型:
Function test()
Dim m As Long
Dim k As Integer
k = 9
m = 3641 * k
Stop
End Function
这里,依然会报溢出错误;
如果这样写呢,
m = 3641 * 9
依然报错,我想估计是这里乘数的问题了,于是就这样写:
Function test()
Dim m As Long
Dim k As Long
k = 9
m = 3641 * k
Stop
End Function
OK了,不报错,看来就是乘数必须也要在共同的不溢出数据类型下面了。
这个特性有点奇怪也,麻烦高人解惑。