Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Деление на 0

1.9K
27 апреля 2011 года
sercher
60 / / 21.03.2003
Вопрос, почему при делении на ноль происходит исключение, вместо того, чтобы возвращать максимально для данного типа число? Какой в этом смысл? Просто сказать, что так нельзя?
244
27 апреля 2011 года
UAS
2.0K / / 19.07.2006
Ну хотя бы, если смотреть не с математической точки зрения, а с обыденной, то нельзя представить в том же int число, равное бесконечности. При делении на 0 получаем бесконечность. При этом бесконечность != max(int). Соответственно - возвращать максимальное число - как минимум глупо, как максимум - это может привести к усложнению читаемости (лишние проверки после каждой мат.операции операции) и корректности кода (а что, если пользователь сам сделал int z = max(int); z = z/1 - здесь получим некорректность).

Тем более деление на ноль идентифицируется самим процессором - выставляются соответствующие флаги после выполнения операции.
11
27 апреля 2011 года
oxotnik333
2.9K / / 03.08.2007
Цитата: sercher
Вопрос, почему при делении на ноль происходит исключение, вместо того, чтобы возвращать максимально для данного типа число? Какой в этом смысл? Просто сказать, что так нельзя?



потому что максимальное для данного типа число, тоже есть число, и почем компилятору знать его программист хочет получить или бесконечность

277
27 апреля 2011 года
arrjj
1.7K / / 26.01.2011
Ну во первых если в коде явно присутствует a=a/0; то компилятор как правило руганётся что на ноль делить нельзя:
 
Код:
~$ g++ qwe.cpp -o qwe.o
qwe.cpp: In function ‘int main()’:
qwe.cpp:7: warning: division by zero

Ну и например при делении double a=5 на double b=0 исключения не будет,а a=∞
Единственное, что жаль, то что арифметические исключения не ловятся блоком try/catch, поэтому программист должен сам проверять делитель на ноль.
278
27 апреля 2011 года
Alexander92
1.1K / / 04.08.2008
Очень трудно диагностируемые ошибки могут появиться, если сделать то, что вы предлагаете. И с математической стороны некорректно выглядеть будет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог