Другие языки программирования и технологии
Что такое переполнение ?( Паскаль, Делфи)
Когда оно случается и почему ? Как его предотвратить и когда оно может пройти не заметно? говорим о Real, Integer типах
Ну переполнение это уже описали.
Бывает еще переполнение стека - это когда пытаешься создать слишком много переменных, например.
иногда переполнение незаметно.
например, напишите в паскале:
i: integer;
i := 64000;
очень часто бывает что переполнение "незаметно", но его видно, если в переменной начинаются какие-то "интересности". обычно если увеличивается переменная, то при переполнении она становится отрицательной (и естественно хранит уже неверную информацию)
при этом если эта переменная является промежуточным результатом то конечный результат может очень походить на правильный. но естественно правильным не являться.
компилятор умеет все это отслеживать. к тому же в дельфи надо умудриться переполнить что-нибудь.
кстати не рекомендую реал-тип. самый глючный из возможных.
Бывает еще переполнение стека - это когда пытаешься создать слишком много переменных, например.
иногда переполнение незаметно.
например, напишите в паскале:
i: integer;
i := 64000;
очень часто бывает что переполнение "незаметно", но его видно, если в переменной начинаются какие-то "интересности". обычно если увеличивается переменная, то при переполнении она становится отрицательной (и естественно хранит уже неверную информацию)
при этом если эта переменная является промежуточным результатом то конечный результат может очень походить на правильный. но естественно правильным не являться.
компилятор умеет все это отслеживать. к тому же в дельфи надо умудриться переполнить что-нибудь.
кстати не рекомендую реал-тип. самый глючный из возможных.
Переполнение происходит когда результирующее число не помещается в отведенную ему память. Если не включена директива компилятора {$R+}, это происходит незаметно. Чтобы его предотвратить, надо включить эту директиву и правильно обрабатывать исключения.
Это в любом языке. Каждый тип данных имеет макисмально возможное значение. Когда оно превышено, тогда и возникает..
предотвратить - проверять операнды перед проведением операций. Пример - перед делением на что - то проверяем не ноль ли это что то. Для умножения - сложения можно ограничить операнды значениями гарантированно не приводящими к переполнениям, но это решение приведет к тому что надо будет как - то обрабатывать эти ситуации. Правильным решением является использование библиотек для работы с "большими числами" то есть представлением числа в виде записи его (символами, например) . Но операции математические надо будет писать тогда через функции.
Похожие вопросы
- надо решить задачку через делфи и паскаль)))
- Кто работает в делфи или паскале....
- СРОЧНО! Вопрос жизни и смерти Как умножать длинные числа на паскале?! При умножение иногда выдает переполнение ячейки.
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- Подскажите какой язык програмирования лучше учить? ведь делфи умер..а на паскале ничего интерсеного не выходит.
- Что вы думаете про то что бы начинать учить школьников (10 клас) не с паскаля а с делфи?
- Чем Делфи от Паскаля отличается?Слышал,что они почти идентичны,но названия ведь разные?)
- Обьект паскаль тоже самое что и Делфи?
- Ассемблер. При выполнении серии умножений происходит переполнение EAX.
- Вопрос по делфи