Spec-Zone.ru › C

NAN

Определено в заголовочном файле <math.h> (устарело в C23)
Определено в заголовочном файле <float.h> (начиная с C23)
#define NAN /* implementation-defined */
(начиная с C99)

Макрос NAN раскрывается в константное выражение типа float, которое вычисляется в значение тихого NaN (QNaN).

Если реализация не поддерживает QNaN для типа float, этот макрос не определён.

Примечания

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

Пример

Показывает используемый формат вывода NaN и формат IEEE.

#include <float.h> // since C23
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>

int main(void)
{
    const double f = NAN;
    uint64_t fn;
    memcpy(&fn, &f, sizeof f);
    printf("NAN:   %f %" PRIx64 "\n", f, fn);
}

Возможный вывод:

NAN:   nan 7ff8000000000000

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
    • 7.12/5 NAN (с. TBD)
    • F.10/11/13 NAN (с. TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.12/5 NAN (с. TBD)
    • F.10/11/13 NAN (с. TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.12/5 NAN (с. 232)
    • F.10/11/13 NAN (с. 518)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.12/5 NAN (с. 213)
    • F.9/11/13 NAN (с. 455)

См. также

nannanfnanl
(C99)(C99)(C99)
возвращает NaN (не число)
(функция)
isnan
(C99)
проверяет, является ли заданное число NaN
(макрос функции)
Документация по C++ для NAN

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/math/NAN

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API