слишком большой или слишком маленький
слишком большой или слишком маленький для данного массива подстрочный ин-
декс.Рассмотрим ,например ,эту программу:
dim myarray(100)
x=114
y:=myarray(x)
В массиве нет 114-го элемента,хотя это грубая ошибка не отлавливается
компилятором.Однако,если программа компилируется с включенным тестированием
границ,во время исполнения третьей строки появляется ошибка диапазона подст-
рочных индексов.
Если вы прогоняете програму при выключенной проверке границ,сообщения
об ошибке нет,и значение загружается в y,несмотря на то ,что оно попадает в
память на несколько байтов за пределами последнего элемента массива
myarray.При записи в несуществующий элемент массива ситуация еще хуже,пос-
кольку память ,используемая для хранения бог знает чего,безмолвно перезапи-
сывается.
Следует отметить ,что компилятор всегда сообщает подстрочные индексы
констант вне диапазона.Следущая программа будет не компилироваться независимо
от установки переключателя проверки границ:
DIM MYARRAY(100)
Y=MYARRAY(114)
OVERFLOW(переполнение)
----------------------
Переполнение возникает,когда какая-то арифметическая операция дает
значение вне пределов возможностей хранения целых чисел (-32768 до
32767).Например,кодовый фрагмент
X%=22555
X%=X%+19000
переполняет ограничение +32767 для целых переменных.Если вы компилиру-
ете эту программу с включенной проверкой переполнения,генерируется ошибка
переполнения периода прогона.Однако при выключенной проверке X% назначается
ненормальное значение и исполнение продолжается,как будто ничего не случи-
лось(что оставляет вашу программу непригодной).
Остерегайтесь промежуточных переполнений:
Y%=200000;X%=Y%
Z=(Y%+X%)*2.1
- 39 -
Хотя окончательный результат выражения (X%+Y%)*2.1 легко укладывается
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий