2011-05-05 106 views
18

我想设置一个整数值作为这样的:VB6溢出错误

Dim intID as integer 
intID = x * 10000 

该工程确定时x为3或更低。但是,当x为4,这给我的错误:

run-time error 6 Overflow

我不明白这是为什么。我可以将intID直接设置为40000而不会有任何问题,所以它显然能够存储大量数据。

enter image description here

回答

32

*您不能VB6的整数,因为他们签订的16个号码,以便+32767是最大设置为40000。

Long是32位类型。

但是作为一个警告,如果你是:

Dim lngID As Long 
lngID = 4 * 10000 

你仍然会得到一个溢出为面值数字默认为整数,纠正只需要输入一个只要有&或使用投下一个长CLng()

Dim lngID As Long 
lngID = 4 * 10000& 
lngID = 4 * CLng(10000) 

更新

enter image description here

+0

但为什么我没有拿到一个错误与此:INTID = 40000 – Urbycoz 2011-05-05 10:10:05

+2

在VB ** ** 6,'昏暗INTID为整数INTID = 40000'将错误的时间 – 2011-05-05 10:14:38

+1

因为'100% 3 * 10000'适合一个整数(它的<32767),'4 * 10000'不是 – 2011-05-05 10:21:46

9
在VB6

,整数类型是一个整数的取值范围为-32768至32767

你会在这里使用Long型是最好的。

0

在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 
+1

请解释你的答案。您只需发布代码。 – 2015-03-04 05:04:09

+1

在VB中整数变量范围是-32,768到32,767如果程序中任何变量值超过此范围,则必须声明数据类型为Long而不是Integer.Thanks。 – 2015-03-05 05:42:43

+1

嗨@总是初学者,欢迎来到堆栈溢出。你是对的,解决这个问题的正确方法是使用long而不是int。感谢您提供这个答案。 – Contango 2015-04-08 15:41:14