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

18

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

Dim intID as integer
intID = x * 10000

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

  

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

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

    

задан Urbycoz 05.05.2011 в 11:58
источник

3 ответа

32

Вы не можете установить целое число 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)

Обновление

    
ответ дан Alex K. 05.05.2011 в 12:05
источник
9

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

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

    
ответ дан trickwallett 05.05.2011 в 12:06
источник
0

В VB Целочисленный диапазон переменных -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
    
ответ дан Uttam Kumar Roy 04.03.2015 в 05:53
источник