内部分配VB

时间:2010-07-30 03:13:04

标签: vb6

假设我有任何数组Trial() As Integer
我有两个以下变量定义为Integer:

Dim Left As Integer
Dim Right As Integer

现在我正在增加试验的数组索引

ReDim Preserve Trial(Left+Right)

现在如果我的总数(左+右)超过整数限制,则上述将给出错误 如果重新宣布Left为Long,那么它将正常工作。

其实我想了解(左+右)的内部计算 它是否根据“左”的数据类型分配总空间?
或者它也可能取决于“正确”的数据类型?

2 个答案:

答案 0 :(得分:1)

这取决于两者。编译器将检查这两个变量并根据它需要的数据类型来确定。例如。如果你要添加(或多次或除)一个整数和一个长整数,那么结果会给你一个长的。

答案 1 :(得分:0)

计算Left + Right假定结果也是整数,那就是溢出发生的地方。

如果你先去CLng(Left) + CLng(Right),那么就会以相同的方式完成,只会结果很长,因此不会发生溢出。