Вопрос № 27616: Уважаемые эксперты!Описываю в общем разделе глобальную переменную dim a(0) as long, затем в проце Load_Form пишу If a(0)<35*1000 - на этой строке выдаёт переполнение. Почему вдруг a(0) становится типом integer?
...
Вопрос № 27.616
Уважаемые эксперты!Описываю в общем разделе глобальную переменную dim a(0) as long, затем в проце Load_Form пишу If a(0)<35*1000 - на этой строке выдаёт переполнение. Почему вдруг a(0) становится типом integer?
Отвечает: Licvidator
Здравствуйте, Александр А.А.!
Дело не в массиве. Просто ВБ не может перемножить 35 и 1000 когда они заданы явно, задайте их переменными. Т.е. если b=35 и c=1000 то условие If a(0)< b*с - сработает
Предвижу вопрос "а почему так происходит?" - не знаю.. видимо какие-то внутренние ограничеия компилятора..
Ответ отправил: Licvidator (статус: Профессор)
Отправлен: 12.10.2005, 23:51 Оценка за ответ: 5
Отвечает: _Виталий
Здравствуйте, Александр А.А.!
Вот если так:
If a(0)<35*1000&
то всё нормально. Ошибка получается из-за того, что число 35 и число 1000 являются по умолчанию integer, и при умножении друг на друга получается переполнение типа integer. Если после числа поставиш знак '&' то число уже будет считаться Long.
Ответ отправил: _Виталий (статус: 8-ой класс)
Отправлен: 13.10.2005, 00:04 Оценка за ответ: 5
Отвечает: Miklucho
Здравствуйте, Александр А.А.!
Приветсвую вас, Александр! Что это за сердечко у вас в вопросе(перед "5*1000"), не совсем понятно из-за этого что у вас там такое. Но во-первых, если вы так напишите у вас будет ошибка связанная с незавершенной конструкцией If...Then...Else. Ну да я думаю это для краткости так написали? А вообще я присваивал этой переменной (кстати это не переменная, а элемент массива) и 500000000 и все в норме, нет ошибки.
Ответ отправил: Miklucho (статус: Студент)
Отправлен: 13.10.2005, 06:27
Отвечает: Залетин Виталий Викторович
Здравствуйте, Александр А.А.!
Вот этот случай и есть наглядным примером того,что ВБ - язык, где думать надо, а не смеяться с него!
--------- Учиться никогда не поздно. Особенно программированию!