假设我有任何数组Trial() As Integer
我有两个以下变量定义为Integer:
Dim Left As Integer
Dim Right As Integer
现在我正在增加试验的数组索引
ReDim Preserve Trial(Left+Right)
现在如果我的总数(左+右)超过整数限制,则上述将给出错误 如果重新宣布Left为Long,那么它将正常工作。
其实我想了解(左+右)的内部计算
它是否根据“左”的数据类型分配总空间?
或者它也可能取决于“正确”的数据类型?
答案 0 :(得分:1)
这取决于两者。编译器将检查这两个变量并根据它需要的数据类型来确定。例如。如果你要添加(或多次或除)一个整数和一个长整数,那么结果会给你一个长的。
答案 1 :(得分:0)
计算Left + Right
假定结果也是整数,那就是溢出发生的地方。
如果你先去CLng(Left) + CLng(Right)
,那么就会以相同的方式完成,只会结果很长,因此不会发生溢出。