Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
677 views
in Technique[技术] by (71.8m points)

vb6 - Runtime Overflow error in visual basic 6 code

Following code of Visual Basic 6.0 - SP2 is giving Overflow error. Can somebody explain why?

Private Sub Form_Click()

  Dim Qty as Long

  Qty= 290 * 113       '' 112 is working fine

  MsgBox Qty

End Sub
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The type of an expression is determined by its members, not by the variable it is going to be stored in.

113 gets typed as Byte.
290 gets typed as Integer because it won't fit into a byte.

As the largest of the involved types is Integer, the entire expression 290 * 113 is typed as Integer. An Integer can contain at most 32767, which is less than 290 * 113.

It therefore overflows upon multiplication, before the result is stored into a Long variable.

Explicitly type at least one of the numbers as Long:

Qty = 290& * 113

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...