作者CYT73 (tt)
看板Visual_Basic
標題[VB6 ] 溢位
時間Mon May 10 14:17:31 2010
Case1:
a=380
b=100
c=a*b (OK)
-------------------
Case2:
c=380*100 (錯誤:溢位)
-------------------
查資料的結果可以用
Clng()
不管加在 380 or 100 就可以解決這個問題。
那case1可以運作的原因是甚麼呢?
那case2不行運作的原因是甚麼呢?
感謝大家~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.35.104
1F:推 ClubT:先宣告c為Long就可以啦 可能你要查一下整數和長整數的差別 05/10 15:33
2F:推 necsa:先宣告c為Long還是不行. c=380*100會溢位的解釋為: 05/11 23:18
3F:→ necsa:380為Integer,100為Integer,VB的規則是Integer*Integer= 05/11 23:20
4F:→ necsa:Integer.但380*100已經超過Integer的整數範圍+32767,所以溢 05/11 23:21
5F:→ necsa:位.至於Case1的寫法為何不會溢位我也不了解,想請高手解釋一 05/11 23:22
6F:→ necsa:下 05/11 23:22
7F:推 necsa:自問自答..剛剛試了沒有宣告a,b為Integer的情況下a=380, 05/11 23:26
8F:→ necsa:b=100, a跟b在VB下的型態都是Variant/Integer.可能是Variant 05/11 23:27
9F:→ necsa:/Interger相乘=Variant/Long,所以沒有溢位問題. 05/11 23:29
10F:→ necsa:若Case1先Dim a as Integer, b as Integer, a*b就會溢位 05/11 23:30