【发布时间】:2011-05-05 09:58:25
【问题描述】:
我正在尝试这样设置一个整数值:
Dim intID as integer
intID = x * 10000
当x 为 3 或更少时,这可以正常工作。但是当x 为 4 时,这给了我错误:
运行时错误 6 溢出
我不明白这是为什么。我可以直接将intID设置为40000没有任何问题,所以它显然能够存储大量数字。
【问题讨论】:
我正在尝试这样设置一个整数值:
Dim intID as integer
intID = x * 10000
当x 为 3 或更少时,这可以正常工作。但是当x 为 4 时,这给了我错误:
运行时错误 6 溢出
我不明白这是为什么。我可以直接将intID设置为40000没有任何问题,所以它显然能够存储大量数字。
【问题讨论】:
您*不能将 vb6 整数设置为 40000,因为它们是有符号的 16 位数字,因此 +32767 是最大值。
Long 是 32 位类型。
但需要注意的是,如果您要:
Dim lngID As Long
lngID = 4 * 10000
您仍然会出现溢出,因为文字数字默认为 Integer,要纠正这种情况,只需使用 & 键入一个 long 或使用 CLng() 投射一个 as long:
Dim lngID As Long
lngID = 4 * 10000&
lngID = 4 * CLng(10000)
更新:
【讨论】:
Dim intID as integer: intID = 40000 100% 的时间会出错
3 * 10000 适合整数(其4 * 10000 不适合
在 VB6 中,Integer 类型是一个整数,范围从 -32768 到 32767。
您最好在此处使用Long 类型。
【讨论】:
在 VB 中整数变量范围是 -32,768 到 32,767 如果程序中任何变量值超过此范围,则必须声明数据类型 Long 而不是 Integer。
Dim intID as integer
intID = x * 10000
Dim lngID AS Long
lngID = x * CLng(10000)
' if 10000
' whatever you want to be
【讨论】:
在 VB 中,整数变量范围是 -32,768 到 32,767,如果您的程序中任何变量值超过此范围。 如果您的计数超过 32767,请在 long 中声明变量,那么您的程序中不会出现任何错误。
Dim lngid AS long
【讨论】: