以下Visual Basic 6.0代码 - SP2给出了溢出错误。有人能解释一下原因吗?
Private Sub Form_Click()
Dim Qty as Long
Qty= 290 * 113 '' 112 is working fine
MsgBox Qty
End Sub
答案 0 :(得分:8)
表达式的类型由其成员决定,而不是由它将存储的变量决定。
113
输入为Byte
290
被输入为Integer
,因为它不适合一个字节。
由于最大的相关类型为Integer
,因此整个表达式290 * 113
的类型为Integer
。 Integer
最多可包含32767
,小于290 * 113
。
因此,在将结果存储到Long
变量之前,它会在乘法时溢出。
明确键入至少一个数字Long
:
Qty = 290& * 113