2012-01-11 8 views
4

На основе спецификации «IEEE»: «Если вход или результат NaN, этот стандарт не интерпретирует знак NaN». Однако printf печатает NaN значения как знаковые: nan или -nan Может кто-то момент мне набор правил (? От спецификации), когда nan и когда -nan печатается Например, я проверил, что printf(-1.0f) печатает -nan СпасибоПодписанные значения NaN

+8

Ваш пример 'printf()' не имеет никакого смысла. – unwind

ответ

5

В базовом представлении NaN содержится знаковый бит, и это то, на что смотрит printf, когда он решил распечатать минус или нет.

Причина, почему стандарт говорит, что знаковый бит должен быть проигнорирован, чтобы такие вещи, как или записью отрицания абсолютной просто изменить знаковый бит, без принуждения, чтобы проверить, если значение входного сигнала был NaN.

+0

Можете ли вы, пожалуйста, направить меня туда, где в спецификации или (каком-то) руководстве написано. – Yakov

+0

Несомненно, статья Википедии подробно описывает основное представление: http://en.wikipedia.org/wiki/IEEE_754-1985 – Lindydancer

+0

Я не вижу здесь никакого отношения к -nan vs nan.The документ посвящен арифметике, not print – Yakov

Смежные вопросы