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
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
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
! was the long type indicator. Been a while since VB6 though :)! suffix is for SINGLE 32 bit floating point variables.