Подтвердить что ты не робот

Ошибка переполнения VB6 с большими целыми числами

Я пытаюсь установить целочисленное значение как таковое:

Dim intID as integer
intID = x * 10000

Это работает нормально, когда x равно 3 или меньше. Но когда x равно 4, это дает мне ошибку:

ошибка времени выполнения 6 Переполнение

Я не понимаю, почему это так. Я могу установить intID на 40000 напрямую без каких-либо проблем, поэтому он, очевидно, способен хранить большие числа.

enter image description here

4b9b3361

Ответ 1

Вы не можете установить целое число vb6 в 40000, так как они подписали 16-разрядные номера, поэтому максимальный максимум +32767.

Long - это 32-разрядный тип.

Однако в качестве предостережения, если вы:

Dim lngID As Long
lngID = 4 * 10000

Вы все равно получите переполнение как литеральное число по умолчанию для Integer, чтобы исправить это, просто нарисуйте один на один с & или произнесите один раз, используя CLng():

Dim lngID As Long
lngID = 4 * 10000&
lngID = 4 * CLng(10000)

Обновление

enter image description here

Ответ 2

в VB6, тип Integer - это целое число, которое находится в диапазоне от -32768 до 32767.

Вам лучше всего использовать тип Long.

Ответ 3

В VB Integer диапазон переменных -32,768 - 32,767. Если какое-либо значение переменной больше, чем этот диапазон в вашей программе, вы должны объявить тип данных Long вместо Integer.

Dim intID as integer
intID = x * 10000

Dim lngID AS Long

lngID = x * CLng(10000)
' if 10000
' whatever you want to be