Что касается деления на ноль, стандарты гласят:
C99 6.5.5p5 — Результатом оператора / является частное от деление первого операнда на второй; Результатом оператора % является остаток. В обеих операциях, если значение второго операнда равно нулю, поведение не определено.
C++03 5.6.4 — Бинарный оператор / возвращает частное, а бинарный оператор % возвращает остаток от деления первого выражения на второе. Если второй операнд / или % равен нулю, поведение не определено.
Если бы мы приняли приведенные выше абзацы за чистую монету, ответ, очевидно, Неопределенное поведение для обоих языков. Однако, если мы посмотрим дальше в стандарте C99, мы увидим следующий параграф, который кажется противоречивым(1):
C99 7.12p4 - Макрос INFINITY расширяется до постоянного выражения типа float, представляющего положительную или беззнаковую бесконечность, если таковая имеется;
Есть ли в стандартах какой-то вид из золота правило, согласно которому неопределенное поведение не может быть заменено (потенциально) противоречивым утверждением? За исключением этого, я не думаю, что было бы неразумно заключить, что если ваша реализация определяет макрос INFINITY, то деление на ноль определяется как таковое. Однако если ваша реализация не определяет такой макрос, поведение будет неопределенным.
Мне интересно, каков консенсус (если таковой имеется) ) по этому поводу для каждого из двух языков. Изменится ли ответ, если мы будем говорить о целочисленном делении int i = 1/0 и о делении с плавающей запятой float i = 1,0/0,0 ?
Примечание (1) В стандарте C++03 говорится о библиотеке , которая включает макрос INFINITY.
Подробнее здесь: https://stackoverflow.com/questions/300 ... c-and-or-c
Деление на ноль: неопределенное поведение или реализация, определенная в C и/или C++? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Деление на ноль: неопределенное поведение или реализация, определенная в C и/или C++?
Anonymous » » в форуме C++ - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Деление BigDecimal выдает ArithmeticException: деление на ноль, даже когда я проверяю его
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Python Backtrader RSI ZeroDivisionError: деление с плавающей запятой на ноль
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-