web-dev-qa-db-ja.com

大きな整数でのVB6オーバーフローエラー

私はそのような整数値を設定しようとしています:

Dim intID as integer
intID = x * 10000

xが3以下の場合、これは問題なく機能します。しかし、xが4のとき、これは私にエラーを与えます:

実行時エラー6オーバーフロー

これがなぜなのか分かりません。 intIDを問題なく直接40000に設定できるため、明らかに大きな数値を格納できます。

enter image description here

20
Urbycoz

* 16ビットの数値であるため、vb6整数を40000に設定できません。したがって、+ 32767が最大です。

Longは32ビット型です。

ただし、警告として、次のことを行う場合:

_Dim lngID As Long
lngID = 4 * 10000
_

_&_を使用して長さ1を入力するか、CLng()を使用して長さ1をキャストすると、リテラル番号のデフォルトが整数であるため、オーバーフローが発生します。

_Dim lngID As Long
lngID = 4 * 10000&
lngID = 4 * CLng(10000)
_

更新

enter image description here

37
Alex K.

vB6では、整数型は-32768〜32767の範囲の整数です。

ここでLongタイプを使用するのが最適です。

10
trickwallett

In VB整数変数の範囲は-32,768〜32,767です。プログラムで変数の値がこの範囲を超える場合、整数ではなくデータ型Longを宣言する必要があります。

Dim intID as integer
intID = x * 10000

Dim lngID AS Long

lngID = x * CLng(10000)
' if 10000
' whatever you want to be
0
Uttam Kumar Roy