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或类似的语言编写代码),或者,正如他所说,有数百万个这些变量的实例同时在使用。