我正在试图设置一个整数值,代码如下:
Dim intID as integer
intID = x * 10000
当 x
小于等于 3 时,这个代码工作正常。但是当 x
等于 4 时,就会出现以下错误:
运行时错误 6
溢出
我不明白为什么会这样。我可以直接将 intID
设置成 40000 而没有任何问题,所以它显然能够存储大数字。
由于vb6整数是有符号16位数字,因此无法将其设置为40000,最大值为+32767。
Long
是32位类型。
但是需要注意的是,如果您执行以下操作:
Dim lngID As Long
lngID = 4 * 10000
由于字面值默认为整数,因此您仍将遇到溢出问题,要纠正这个问题,只需使用 &
将1明确声明为 long 类型或使用 CLng()
进行强制转换即可:
Dim lngID As Long
lngID = 4 * 10000&
lngID = 4 * CLng(10000)
更新:
在VB6中,整数类型(Integer)表示范围为-32768到32767的整数。
对于这里的代码,最好使用 Long 类型。
Dim lngid AS long
Dim intID as integer
intID = x * 10000
Dim lngID AS Long
lngID = x * CLng(10000)
' if 10000
' whatever you want to be
Dim intID as integer: intID = 40000
每次都会出现错误100%。 - Alex K.3 * 10000
可以放在一个整数中(它小于32767),而4 * 10000
则不能。 - Alex K.