作者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