@versidue

Почему операция 0.0 / 0.0 выдает ошибку?

В книге написано что 0.0 / 0.0 возвращает литерал nan, но у меня выдает ошибку "divide or mod by zero".
Тоже самое с операциями (-)n / 0.0, которые должны были возвращать inf, однако выдает ошибку. В чем проблема? Компилятор Visual Studio 2019.

std::cout << 0.0 / 0.0 << "\n\n";
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
В какой книге написано про nan? По стандарту C++ деление на ноль - это неопределенное поведение:

If the second operand is zero, the behavior is undefined,


Правда, есть одно исключение:
except that if floating-point division is taking place and the type supports IEEE floating-point arithmetic


Вот только этот стандарт IEEE 754 не постулируется стандартом C++ (потому что зависит от аппаратной реализации чисел с плавающей запятой).

Какие-то компиляторы с каким-то уровнем оптимизации могут действительно выдавать nan. Но не все и не всегда.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы