为什么long l = 1000 * 60会导致溢出?

tmi*_*hty 2 vb6

我有这一行:

    Dim l&
    l = 1000 * 60 '1 min
Run Code Online (Sandbox Code Playgroud)

它会引发溢出错误。

这是为什么?

小智 5

Vb 的帮助说:

您尝试在计算中使用数字,该数字被强制转换为整数,但结果大于整数。例如:

Dim x As Long
x = 2000 * 365   ' Error: Overflow
Run Code Online (Sandbox Code Playgroud)

要解决这种情况,请键入数字,如下所示:

Dim x As Long
x = CLng(2000) * 365
Run Code Online (Sandbox Code Playgroud)

  • 缩写形式“2000& * 365”也有效,并且也可以使用。`&` 将数字强制为 long,并且 Long * Int 与 long 相乘。 (3认同)
  • 短格式可能会在编译时转换为“Long”。长形式几乎肯定会在运行时转换为“Long”,即它的运行速度会稍微慢一些,并且代码也会更长一些。 (2认同)