Dim r As Long
r = (1024 * 768) * 3
...
Забавно VB6 глючит: (1024 * 768) * 3 = Overflow
Код:
На выделенную строчку VB6 вежливо сказал: Runtime-error '6': Overflow.
Удивлению моему небыло границ... Тогда я немного переставил ход событий:
Код:
Dim r As Long
r = 1024
r = r * 768
r = r * 3
...
r = 1024
r = r * 768
r = r * 3
...
К моему удивлению операция прошла успешно. Но все же может я в чем то ошибся и може кто сталкивался с такой проблемой поделиться опытом? Все таки не очень удобно расписывать подобные арефметические выражения показанным выше образом.
Порылся в справке и нашел, что результат выражения будет иметь тип операнда имеющего самый емкий тип (ну и товтология). А как ему узнать что за тип у твоих констант? Я не нашел какой тип используется по умолчанию для констант, но из примера можно предположить что int16,т.е. переполнение у тебя происходит еще в скобках. Для этого можно использовать "спецификатор" типа Long (&):
Код:
Dim r As Long
r=1024 * [COLOR=red]768&[/COLOR] *3;
r=1024 * [COLOR=red]768&[/COLOR] *3;
Ааа, тогда понятно. Действительно, если указать VB6 что числа типа Long то он воспринимает ето коректно. Спасибо за хорошее разяснение! :)
r = (1024& * 768&) * 3&