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