2

以下 Visual Basic 6.0 - SP2 的代码给出了溢出错误。有人可以解释为什么吗?

Private Sub Form_Click()

  Dim Qty as Long

  Qty= 290 * 113       '' 112 is working fine

  MsgBox Qty

End Sub
4

1 回答 1

9

表达式的类型由它的成员决定,而不是由它要存储的变量决定。

113输入为Byte.
290被输入为Integer因为它不适合一个字节。

由于涉及的类型中最大的是Integer,因此整个表达式290 * 113的类型为Integer。AnInteger最多可以包含 ,32767小于290 * 113

因此,在结果存储到Long变量之前,它会在乘法时溢出。

明确键入至少一个数字Long

Qty = 290& * 113
于 2013-04-27T11:27:55.640 回答