Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Деление на ноль

15 Июл 2013

Определение

Деление на ноль - логическая программная ошибка, зачастую приводящая к ошибке времени выполнения, которая заключается в попытке деления любого числа на делитель, равный нулю.

Поведение программы

Возникновение ошибки времени выполнения зависит от многих факторов: как от языка и платформы разработки, так и от типа делимых чисел.

Согласно параграфу 5.6 стандарта языка Си++, если вторым операндом операторов "/" или "%" является 0, то в этом случае поведение не определено.

Попытка деления на целочисленный ноль на процессоре семейства x86 или x86_64 приводит к возникновению аппаратного исключения (по вектору 0); соответственно программа на Си или Си++, скомпилированная в машинный код, аварийно завершается при выполнении этого действия.

В то же время, если переменная, содержащая ноль, была вещественной - согласно стандарту IEEE 754, результатом будет вещественное число "плюс бесконечность" или "минус бесконечность" (согласно тому же стандарту, ноль также имеет знак) в случае ненулевого числителя, и "не-число" в случае неопределенности 0/0 (компилятор Microsoft Visual C++ возвращает специфичное для платформы x86 число "неопределенность").

Следует учитывать, что сама переменная не обязательно должна содержать именно 0. Ноль может возникнуть при округлении, называемом исчезновением порядка (arithmetic underflow) - когда в результате операции получается число, значением меньше машинной точности. В таком случае результат считается равным 0.

Отслеживание деления на ноль

Ошибка деления ноль может отслеживаться некоторыми компиляторами (например, Microsoft Visual C++) и статическими анализаторами.

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

Библиографический список

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам