2

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
1
  • 5
    As a side note, you might want to consider Service Pack 6. Commented Apr 27, 2013 at 11:41

1 Answer 1

9

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
Sign up to request clarification or add additional context in comments.

4 Comments

+1 Beat me to it, although I thought ! was the long type indicator. Been a while since VB6 though :)
Thanks for quick response GSerg. I also found answer at vbcity.com/forums/t/42020.aspx. Anyway thanks a lot for your help!
@JoachimIsaksson The ! suffix is for SINGLE 32 bit floating point variables.
@MrSnrub Yep, had to look it up though. That's what 12 years of not using it does to your memory :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.