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)
См. также
|
(C99)(C99)(C99) | возвращает NaN (не число) (функция) |
|
(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