Information

Founded
Location
Латвия
Website
ua-hosting.company
Employees
11–30 employees
Registered
Pull to refresh
Comments 27
Всегда думал, что прерывания нужны для переключения задач.

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

Наверное в математических пакетах может иметь смысл деления на ноль, и операция выдаёт вполне внятные результаты математически образованному пользователю без панических прерываний. Нет?
UFO landed and left these words here
UFO landed and left these words here
Вообще-то деление на 0 обычно не имеет смысла. В комплексном анализе, вводится бесконечно удаленная точка ∞. Поэтому некоторые соотношения вроде z/0 = ∞ разрешены. В вещественном анализе, деление на 0 обычно не определено. Есть кое какие алгебраические структуры, где деление на 0 осуществляется, например wheel
UFO landed and left these words here
Да ладно вам, человек наверное впервые после окончания вуза вспомнил что-то из курса (скорее всего пределы), а вы его так сразу слили.
«Сначала, в начальной школе, нам говорят, что нельзя вычитать из большего меньшее. Потом, в старших классах, оказывается, что всё-таки можно. Тогда говорят, что нельзя делить на ноль. Потом, в высшей школе, оказывается, что иногда всё-таки можно.»

Прерывания еще и корректно обработать нужно.
А то будет как в испытаниях мотороловских процессоров в автопилоте истребителей и полетах в районе Мертвого моря.
> Тогда говорят, что нельзя делить на ноль. Потом, в высшей школе, оказывается, что иногда всё-таки можно.
Нет, нельзя. Не создано такой непротиворечивой системы, где можно.
Бесконечно-малые — всё-таки не ноль.
деление на ноль это неопределенность, от неё можно избавиться, ценой появления неопределённости в другом месте.
«Сингулярность, это место, где мы, согласно теории Эйнштейна, делим на ноль. ̶Н̶е̶л̶ь̶з̶я̶ плохо делить на ноль.

Теория струн — это ведь „теория всего“, общая теория поля. Она должна дать ответы на те вопросы, на которые не даёт ответов теория Эйнштейна. Она р̲а̲з̲р̲е̲ш̲и̲т̲ ̲д̲е̲л̲и̲т̲ь̲ ̲н̲а̲ ̲н̲о̲л̲ь̲ легально».
/Нил Деграсс Тайсон, интервью на PBS/
;-)
Вообще-то есть, но не слышал, чтобы они где-то активно применялись сегодня
Потом, в высшей школе, оказывается, что иногда всё-таки можно.

Только, пожалуйста, не делайте это часто.
Как раз и не вызывает, потому что эта ситуация предусмотрена заранее. А прерывание предусмотрено не просто так, а для того чтобы в программу не вставлять проверку на «неопределённый результат» после каждой команды деления.
Вместо этого, в случае попытки деления на ноль возникает прерывание, а обработчик этого прерывания в большинстве случаев прерывает выполнение расчёта и отправляет сообщение об ошибке выше. Это если обработчик назначен, иначе прерывание происходит на системном уровне и системе не остаётся ничего другого кроме как прибить процесс в котором возникло это прерывание.
Значит так же логично поднимать прерывания на неуказанную дату рождения, на отсутствие денежного счёта, на неверный формат массы тела, на пустой остаток на складе, выход за предельно допустимую перегрузку манёвра, на многие другие ситуации, с которыми удобнее «не вставлять проверку после каждой команды»? ;-)
Ага. Осталось только ввести в процессоре команды на определение неуказанной даты рождения ;)
Для таких случаев давно изобретён try/catch, если что. Поведение аналогично, только читать и писать проще.
Конечно можно. Только по стандарту C++ try/catch ловит только языковые исключения. Всё остальное это нестандартные платформо-специфичные приблуды. В той же винде для отлова SEH'ов надо __try блок использовать.
UFO landed and left these words here
Был такой случай, когда деление на ноль привело к перекомпилляции ядра Linux. Так что осторожно с этим.
Совсем недавно для себя открыл, что в ZX Spectrum при делении на ноль в интерпретаторе Basic выводит сообщение «Number too big».
Only those users with full accounts are able to leave comments. Log in, please.