VB 溢出 小问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:50:45
Option Explicit

Private Sub Command1_Click()
Dim a, b As Integer
a = 24
b = 3600
Print a * b '这里没问题
Print 24 * 3600 '这里怎么就"溢出"了呢?
End Sub

VB会自动以最匹配的形式存储运算数,并且以相同的形式存储计算结果。在Print a * b中,a是变体, b是Integer ,因此VB会用变体存储结果,不溢出。而在Print 24 * 3600 中,VB会以Integer型存储24和3600,当然结果也是用这种形式存储,结果就溢出了。

直接用小于32768的整数运算时,默认是Integer型,24*3600>32768就会出错

这是VB编译时要经常注意的小问题

改成
Print 24 * 3600& 就不会出错,整数后面加& 就转换为长整形

其实那不是溢出的问题,而是你声明变量的时候错误了,要声明a和b都是Integer类型,正确的声明形式是:Dim a As Integer,b As Integer