Возможно, это неправильный вопрос, который задают здесь, но мне любопытно. Я знаю, что многие языки просто взорвутся и потерпят неудачу, когда их попросят разделить на 0, но есть ли какие-либо языки программирования, которые могут разумно справиться с этой невозможной суммой - и если да, что они делают? Продолжают ли они обрабатывать, обрабатывают 350/0 как 350 или прекращают выполнение или что?Как разные языки программирования обрабатывают деление на 0?
ответ
От Wikipedia:
бесконечностей расширенной вещественной числовой прямой могут быть представлены в стандарте IEEE с плавающей точкой типа данных, так же, как обычные значения с плавающей точкой, как 1, 1.5 и т. Д. Они не являются значениями ошибок в любом случае, хотя они часто (но не всегда, так как это зависит от округления), используемые в качестве значений замещения при переполнении. При делении на ноль исключение возвращает положительную или отрицательную бесконечность как точный результат.
Я был бы удивлен, если какой-либо язык вернет 350, если вы делаете 350/0. Всего два примера, но Java бросает исключение, которое можно поймать. C/C++ просто падает (я думаю, что он выдает сигнал, который, вероятно, может быть пойман).
Существует два разных языка C и C++, и я не думаю, что у каждого из них есть какое-то конкретное положение в их стандартах. Некоторые реализации одного или двух языков могут подавлять сигналы. –
В Java деление на ноль в контексте с плавающей точкой создает специальное значение Double.POSITIVE_INFINITY
или Double.NEGATIVE_INFINITY
.
или 'Double.NaN', если вы делите нуль на ноль. – mob
Малоизвестный Java programming language дает специальную константу Double.POSITIVE_INFINITY
или Double.NEGATIVE_INFINITY
(в зависимости от числителя) при делении на ноль в контексте с плавающей точкой IEEE. Целочисленное деление на ноль не определено и приводит к выбросу ArithmeticException
, что сильно отличается от вашего сценария «взрыва и сбоя».
Как вы удваиваете бесконечность? Разве это не дает вам бесконечности? Моронические умы хотят знать! –
Кроме того, если вы не удваиваете число, это делает его числом? –
@ T.E.D На самом деле, некоторые бесконечности больше, чем другие из-за скорости, с которой они расширяются, например. SUM (1..n) - меньшая бесконечность, чем SUM (1^2 ... n^2), поскольку n приближается к бесконечности (это связано с ограничениями в математике) –
В Delphi он либо бросает ошибку времени компиляции (если делится на 0 значение const), либо ловушку ошибки выполнения, если это происходит во время выполнения.
Это то же самое для C и C++.
В PHP вы получите предупреждение:
Предупреждение: Деление на ноль в <file.php> на линии X
Так, в PHP, для чего-то например:
$i = 123/0;
$ i будет ничто. BUT $ i не === NULL и isset ($ i) возвращает true, а is_string ($ i) возвращает false.
, если вы получаете только предупреждение, что выражение вернуть? –
Обновленный ответ с дополнительной информацией. – AlexV
В INTERCAL стандартной библиотеки возвращает #0
на деление на ноль
Python (по крайней мере, версия 2, у меня его нет 3) бросает ZeroDivisionError, который можно поймать.
num = 42
try:
for divisor in (1,0):
ans = num/divisor
print ans
except ZeroDivisionError:
print "Trying to divide by 0!"
распечатывает:
42
Trying to divide by 0!
Версия 3.1 по-прежнему вызывает ZeroDivisionError. – dan04
числа с плавающей точкой согласно IEEE определяет константы NaN и т.д. Любое продолжение операции с участием THST значения будет оставаться неизменными до конца. Целочисленные или целые числа отличаются друг от друга с исключениями ... В java ...
- 1. Как разные языки обрабатывают «болтаться еще»?
- 2. Как разные языки обрабатывают a = a ++?
- 3. Как сравнить разные языки программирования?
- 4. Как рубины обрабатывают нулевое деление?
- 5. Какие библиотеки были перенесены на разные языки программирования?
- 6. Как добавить разные языки программирования в Eclipse (C++, C#, Java)
- 7. Деление на 0 аномалией
- 8. Как языки обрабатывают печать поплавков под капотом?
- 9. Языки программирования и шаблоны проектирования
- 10. Действительно многоязычные языки программирования?
- 11. Языки программирования - разработка игр
- 12. Языки программирования SIMD
- 13. Все языки программирования изоморфны?
- 14. Как языки программирования хранения массивов
- 15. Как работают языки визуального программирования?
- 16. Языки программирования Hyper-Threading
- 17. Языки автомобильного программирования
- 18. чтобы преобразовать javascript в разные языки программирования, что мне нужно?
- 19. Языки программирования и скриптов
- 20. Языки программирования для Windows
- 21. Как перевести названия городов на разные языки
- 22. Мобильные операционные системы и языки (языки) программирования они написаны на
- 23. Перевести программу на другие языки программирования
- 24. Какие другие языки программирования работают на PNaCl?
- 25. права на левые языки и проблемы программирования
- 26. Целевые множественные языки программирования/платформы
- 27. Какие языки программирования возможны на Blackberry?
- 28. Являются ли языки программирования одинаковыми везде?
- 29. хомская иерархия и языки программирования
- 30. протокол буфера разные языки
Вы спрашиваете о языках или языковых реализациях? Не все языки предписывают точное поведение, и поэтому оно зависит от реализации. –
Задайте вопрос о том, как каждый отдельный язык может рассматривать сценарий. Некоторые увлекательные ответы, которые я получал, просто любопытно, что делает каждый язык. – Jack