Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Работа с типом Long


Автор: ИгнатьевАлексей 21.4.2006, 16:03
Господа! Помогите объяснить!


В первом случае:

Код

Dim myLong As Long
myLong = 360000


все прекрасно, 

а во втором случае

Код

Dim myLong As Long
myLong = 3600*100


ошибка переполнения в последней строке!

Как это объяснить smile 

Заранее благодарен!
 

Автор: Akina 21.4.2006, 17:35
Цитата(ИгнатьевАлексей @  21.4.2006,  17:03 Найти цитируемый пост)
Как это объяснить 

Очень просто. Думай как интерпретатор.

Надо что-то вычислить... приступим...
Что там? а, выражение... разбираем...
Два операнда, одно действие... заморочек не будет...
Какой первый операнд? 3600... ясно, integer...
Какой второй? 100... тоже integer...
Что там с ними делаем... множим... так, это мы умеем, два integer умножать целочисленно...
Ой, блин! проц говорит, что результат ни фига в integer не лезет!
Эй, юзер! На тебе runtime error и разбирайся с ним сам.

А вот если написАть

Код
Dim myLong As Long
myLong = 3600 * 100&
или
Код
Dim myLong As Long
myLong = 3600& * 100


то для integer на long он и второй integer приведет к long и умножение пройдет без ошибки. 

Автор: ИгнатьевАлексей 22.4.2006, 16:57
Огромное спасибо! 

Не ожидал я от VB такого моразма! 

Автор: Exception 22.4.2006, 17:10
Это не маразм. Это средство, предохраняющее тебя от меня. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)