#c #floating-point #c 17 #nan #floating-point-exceptions
Вопрос:
Из пяти категорий исключений с плавающей запятой, определенных в C , а именно:
FE_INEXACT
FE_DIVBYZERO
FE_UNDERFLOW
FE_OVERFLOW
FE_INVALID
…что из этого может привести к NaN
значению?
Кроме того, существуют ли какие — либо операции, которые могут привести к NaN
значению, но не вызвать одно из этих исключений?
Комментарии:
1. Что касается вашего второго вопроса, есть перегрузка, для
quiet_NaN
которой нет исключения (на самом деле единственная со времен C 11): en.cppreference.com/w/cpp/types/numeric_limits/quiet_NaN2. @Jose: Я не думаю
noexcept
, что это имеет отношение к делу. Исключения с плавающей запятой и обычные исключения C не связаны.3. Возможно, вам захочется уточнить, имеете ли вы в виду расплывчатые гарантии, предоставляемые стандартом C , или более строгие гарантии тех, которые утверждают
is_iec559
.4. @Sneftel: Ответ на каждый из этих двух случаев будет приветствоваться.
5. Это не два случая, это один случай и тысяча других случаев.