2011-05-05 105 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