nan, nanf, nanl, nand32, nand64, nand128
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<math.h>
|
||
|
float
nanf
(
const
char
*
arg
)
;
|
(1) | (начиная с C99) |
|
double
nan
(
const
char
*
arg
)
;
|
(2) | (начиная с C99) |
|
long
double
nanl
(
const
char
*
arg
)
;
|
(3) | (начиная с C99) |
|
_Decimal32 nand32
(
const
char
*
arg
)
;
|
(4) | (начиная с C23) |
|
_Decimal64 nand64
(
const
char
*
arg
)
;
|
(5) | (начиная с C23) |
|
_Decimal128 nand128
(
const
char
*
arg
)
;
|
(6) | (начиная с C23) |
Преобразует определяемую реализацией строку символов
arg
в соответствующее значение тихого NaN, как если бы вызывалась соответствующая функция парсинга
strtoX
, следующим образом:
- Вызов nan ( "n-char-sequence" ) , где n-char-sequence представляет собой последовательность цифр, латинских букв и подчёркиваний, эквивалентен вызову /*strtoX*/ ( "NAN(n-char-sequence)" , ( char ** ) NULL ) ; .
- Вызов nan ( "" ) эквивалентен вызову /*strtoX*/ ( "NAN()" , ( char ** ) NULL ) ; .
- Вызов nan ( "string" ) , где string не является ни n-char-sequence , ни пустой строкой, эквивалентен вызову /*strtoX*/ ( "NAN" , ( char ** ) NULL ) ; .
|
Функции, возвращающие значения десятичных чисел с плавающей запятой, объявляются тогда и только тогда, когда реализация предопределяет
|
(начиная с C23) |
Содержание |
Параметры
| arg | - | строка узких символов, идентифицирующая содержимое NaN |
Возвращаемое значение
Тихий NaN, соответствующий идентифицирующей строке
arg
или ноль, если реализация не поддерживает тихие NaN.
Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559), она также поддерживает тихие NaN.
Обработка ошибок
Эта функция не подвержена ни одному из условий ошибок, указанных в math_errhandling .
Пример
#include <stdio.h> #include <math.h> #include <stdint.h> #include <inttypes.h> #include <string.h> int main(void) { double f1 = nan("1"); uint64_t f1n; memcpy(&f1n, &f1, sizeof f1); printf("nan(\"1\") = %f (%" PRIx64 ")\n", f1, f1n); double f2 = nan("2"); uint64_t f2n; memcpy(&f2n, &f2, sizeof f2); printf("nan(\"2\") = %f (%" PRIx64 ")\n", f2, f2n); double f3 = nan("0xF"); uint64_t f3n; memcpy(&f3n, &f3, sizeof f3); printf("nan(\"0xF\") = %f (%" PRIx64 ")\n", f3, f3n); }
Возможный вывод:
nan("1") = nan (7ff8000000000001)
nan("2") = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.12.11.2 Функции nan (стр. 186-187)
-
- F.10.8.2 Функции nan (стр. 386)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.12.11.2 Функции nan (стр. 256)
-
- F.10.8.2 Функции nan (стр. 529)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.12.11.2 Функции nan (стр. 237)
-
- F.9.8.2 Функции fabs (стр. 465)
Смотрите также
|
(C99)
|
проверяет, является ли заданное число NaN
(макрос-функция) |
|
(C99)
|
вычисляется в тихий NaN типа
float
(макроконстанта) |
|
C++ documentation
для
nanf
,
nan
,
nanl
|
|