Внутреннее распределение VB - PullRequest
1 голос
/ 30 июля 2010

Допустим, у меня есть любой массив Trial() As Integer
У меня есть две следующие переменные, определенные как целое число:

Dim Left As Integer
Dim Right As Integer

Теперь я увеличиваю индекс массива пробной версии

ReDim Preserve Trial(Left+Right)

Теперь, если мой итог (влево + вправо) превышает целочисленный предел, вышеприведенное приведет к ошибке.
И если переопределить Left как Long, он будет работать нормально.

На самом деле я хочу понять внутренний расчет для (влево + вправо).
Распределяет ли он общее пространство в зависимости от типа данных «Left»?
Или это может также зависеть от типа данных "Право"?

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Это зависит от обоих. Компилятор проверит обе переменные и определит, какой тип данных ему нужен. Например. Если вы добавите (или умножите или разделите) целое и длинное, то результат даст вам длинное.

0 голосов
/ 30 июля 2010

Вычисление Left + Right выполняется при условии, что результат также является целым числом, вот где происходит переполнение.

Если вы сначала нажмете CLng(Left) + CLng(Right), это будет сделано так же, только результат будетбыть длинным, и, следовательно, переполнение не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...