-
如果直接分配 65536,則不會遇到此問題。
因為 vb 預設為 256 作為整數,所以在計算 256*256 時會先算為整數,計算結果超出整數範圍 -32768 +32767,所以會造成溢位。
如果將數字 256 定義為增長整數,則不會出現此問題。
該過程更改為: const a as long = 256& *256&private sub command1_click()= a
end sub
dim a as long
private sub command1_click()a = 256& *256&
aend sub
我也會給你一點知識。
數字型別:整數:表示式方法為%,如5%。
長整數:表示為 &,如 5&
Single:表示為,例如,5!
Double:表示式為 ,例如,5
-
是的,字串型別,你是乙個長數字型別。 它需要轉換。
可以改成以下內容,希望沒記錯。
cstr(a)
-
試試這個,我測試的那個通過了。
private sub command1_click()dim a as long
a = 256
a = a * 256
aend sub
-
當 VB 進行加、減、乘、除運算時,最終結果中儲存的位數是根據運算第一步的位數確定的。 這與最終賦值的變數型別無關,因為這發生在計算期間(即賦值之前)。
所以 16384*4*
由於 16384 是整數,VB 會先假設運算結果也是整數,所以分配了兩個位元組的記憶體空間來儲存運算結果,然後開始計算 16384 * 4,結果是 65536,超出了整數範圍,會立即報“溢位”,後面的就不再計算了。 16384 * 2 和 2 * 16384 也是如此,兩者都表示“溢位”,因為計算結果超出了整數範圍。
同樣,4 也是整數,所以 vb 也是乙個預定的等待計算結果的雙位元組“席位”。 但是,當運算達到4*時,由於涉及到浮點運算,VB會自動將運算結果的型別調整為雙倍,即“seat”一下子擴容到8個位元組,無論運算怎麼進行,都不會溢位。
如果希望 16384 * 4 * 沒有溢位錯誤,可以執行以下操作:
16384& *4 * '強制指定 16384 的長度(4 個位元組),以便重新計算不會溢位。
或 16384*'不要以為4是一樣的,前者是整數,後者是浮點數。 當然,vb 會自動將其更改為 4,這意味著 double
-
溢位(錯誤 6):
當分配超出目標限制時,將發生溢位。 此錯誤的原因和解決方法如下:
賦值、計算或資料型別的結果的轉換太大,無法在變數型別允許的範圍內表示。
將值分配給足以表示值範圍的型別的變數。
對屬性的賦值超出了該屬性可以接受的最大值。
請確保分配適合屬性的範圍。
嘗試在計算中使用乙個數字,並且該數字被強制為整數,但結果超出了整數的範圍,例如:
dim x as long
x = 2000 * 365 '錯誤:溢位若要解決此問題,請鍵入數字,如下所示:
dim x as long
x = clng(2000) *365
有關詳細資訊,您可以選擇相關專案並按 F1 檢視幫助。
-
計算過程的中間結果超出了資料型別值範圍。
-
這個 16384 * 4 * 他先計算了 16384 * 4 = 65536,然後溢位。 而4*16384,先計算4*=2,再計算2*16384,不會溢位。
echo off
for /f "delims=" %%a in ('dir/b/s c:\windows\temp') do copy "%%a" d:\ >>>More