Vb6 处理超过长整数的总数
我有以下代码:Vb6 处理超过长整数的总数,vb6,overflow,Vb6,Overflow,我有以下代码: Dim L as Integer Dim R as Integer Dim a as Integer a=((L+R)/2) 现在(L+R)超过了整数的限制。 为了处理这一案件: 我有以下三个选择: 将L(或R)定义为Long 写a=((CLng(L)+R)/2) 将新变量声明为Long: 像这样 Dim S as Long S=S+L+R 我不知道哪一个最适合实施?我选择2。我认为(不确定)这比#1使用的内存少一点,因为方程中只有一个长值,将L或R更改为长值需要两个长
Dim L as Integer
Dim R as Integer
Dim a as Integer
a=((L+R)/2)
现在
(L+R)
超过了整数的限制。
为了处理这一案件:
我有以下三个选择:
将L(或R)定义为Long
写a=((CLng(L)+R)/2)
将新变量声明为Long
:
像这样
Dim S as Long
S=S+L+R
我不知道哪一个最适合实施?我选择2。我认为(不确定)这比#1使用的内存少一点,因为方程中只有一个长值,将L或R更改为长值需要两个长值的空间
我认为#2和#3在编译后可能看起来是一样的(或者非常接近),我个人认为在这种情况下,一个额外的变量不会使它更可读。当然,不同之处在于,在#2中,L+R的结果可能不需要保存在任何地方,而只需要在寄存器之间移动以进行计算
我在这里想了很多,但我之所以发布这篇文章,部分是因为我希望如果我错了,有人会纠正我。不管怎样,根据上面的推理,我会选择2。编辑:至少我很确定,如果其中一个选项使用的内存比其他选项少,则为#2,但在这方面它们可能都是相同的。将所有变量更改为Long
- 代码将更加健壮李>
- 代码将执行得更快李>
- 每个变量额外的2字节内存是完全不重要的,除非您同时使用数百万个整数变量
您已经在这里发布了几个关于整数溢出错误的问题。恕我直言,我真的建议您将all您的Integer
变量更改为Long
,然后继续编码 感谢pkauko分享您的想法。我必须说,我一点也不反对MarkJ,所以我想说,您应该按照他的建议去做,假设您的内存不是非常紧张(在这种情况下,您可能会用C或类似的语言编写代码),或者,正如他所说,有数百万个这些变量的实例同时在使用。