Ошибка переполнения VB6 с большими целыми числами
Я пытаюсь установить целочисленное значение как таковое:
Dim intID as integer
intID = x * 10000
Это работает нормально, когда x
равно 3 или меньше. Но когда x
равно 4, это дает мне ошибку:
ошибка времени выполнения 6 Переполнение
Я не понимаю, почему это так. Я могу установить intID
на 40000 напрямую без каких-либо проблем, поэтому он, очевидно, способен хранить большие числа.
![enter image description here]()
Ответы
Ответ 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