Другие языки программирования и технологии

Что такое переполнение ?( Паскаль, Делфи)

Когда оно случается и почему ? Как его предотвратить и когда оно может пройти не заметно? говорим о Real, Integer типах
Ну переполнение это уже описали.
Бывает еще переполнение стека - это когда пытаешься создать слишком много переменных, например.

иногда переполнение незаметно.
например, напишите в паскале:

i: integer;

i := 64000;

очень часто бывает что переполнение "незаметно", но его видно, если в переменной начинаются какие-то "интересности". обычно если увеличивается переменная, то при переполнении она становится отрицательной (и естественно хранит уже неверную информацию)
при этом если эта переменная является промежуточным результатом то конечный результат может очень походить на правильный. но естественно правильным не являться.

компилятор умеет все это отслеживать. к тому же в дельфи надо умудриться переполнить что-нибудь.
кстати не рекомендую реал-тип. самый глючный из возможных.
ЕБ
Евгений Безносов
1 580
Лучший ответ
Переполнение происходит когда результирующее число не помещается в отведенную ему память. Если не включена директива компилятора {$R+}, это происходит незаметно. Чтобы его предотвратить, надо включить эту директиву и правильно обрабатывать исключения.
Боря Челпанов
Боря Челпанов
64 681
Это в любом языке. Каждый тип данных имеет макисмально возможное значение. Когда оно превышено, тогда и возникает..
предотвратить - проверять операнды перед проведением операций. Пример - перед делением на что - то проверяем не ноль ли это что то. Для умножения - сложения можно ограничить операнды значениями гарантированно не приводящими к переполнениям, но это решение приведет к тому что надо будет как - то обрабатывать эти ситуации. Правильным решением является использование библиотек для работы с "большими числами" то есть представлением числа в виде записи его (символами, например) . Но операции математические надо будет писать тогда через функции.