两个long型相乘,如何判断结果是否溢出

解决方案 »

  1.   

    举例如下
    dim a as long,b as longif (a/2)*(b/2)>2^32/8 then
     msgbox "overflow"
    endif
    其中2^32/8的计算由来是这样的,long是4字节,所以就是2^32,带上正负号就要除2,在除以4和前面的a/2、b/2相对应。
      

  2.   

    再补充一句,2^32/8是计算公式,实际在VB中是不能这么写的,否则这个公式就溢出了,你可以实现将long的最大值除以4,然后直接用就行了。
    当然,我前面的例子里还没有考虑负数的情况,你自己琢磨吧。