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);.
strtof.strtod.strtold.strtod32.strtod64.strtod128.|
Функции, возвращающие значения с плавающей точкой в десятичной форме, объявляются тогда и только тогда, когда реализация предварительно определяет |
(с 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++ для nanf, nan, nanl |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/nan