vb裡Dim a As Long a1001000報錯溢位,但a1000001000就不報錯,這是什麼情況

2021-03-17 20:30:06 字數 506 閱讀 6403

1樓:網海1書生

那是因為vb預設把100和1000都按integer(整型)來處理,而且也是按integer來預先給計算結果分配記憶體空間(即兩個位元組),但是計算結果100000卻是個long(長整型,4個位元組),所以就溢位了。而100000*1000中,100000是個long,vb就按long來給計算結果分配空間(即四個位元組),而且計算結果也是long,所以不報錯。

解決辦法是強制把參與計算的某個數設為long(只需要一個即可,當然多個也肯定行):

a = 100& * 1000

或a = 100 * 1000&

或者預先把數值賦值給一個long變數:

dim a as long, b as longb = 100

a = b * 1000

補充一下:你可以通過下面的方法就能驗證我說的是否正確:

print 32767 + 1 '這個會溢位print 32768 + 1 '這個不報錯因為32767是integer的最大值

vb裡的len函式,VB裡的len函式

以位元組為單位的英文字母,ansi下一個字是兩個位元組,1個位元組的字元數。使用len只計算長度的位數,或致電長度的字串,其實,他不管,你可以直接使用strconv,輸出亂碼。幾個好幾只計算的位數。如果你要計算出準確的位元組數。使用lenb 可以準確地計算出臨時的位元組數,一般的網路接收到的資料儘可...

vb求1到n的階乘,VB求1到N的階乘

sum 0 temp 1 for i 1 to n sum sum temp i temp temp i next 用vb求1到n的階乘和的程式編寫 自己編寫函式 private function jiec byval n as integer as long dim i as integer di...

用VB怎麼把12345變成,用VB怎麼把12345變成

最簡單bai的就是用strreverse函式 du假設zhitext1.text 12345在發生 mand1的單dao擊事件時要專讓text2.text 54321 語句屬為 private sub mand1 click text2.text strreverse text1.text end ...