Namespaces
Variants

nan, nanf, nanl, nand32, nand64, nand128

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
nan nanf nanl nand N
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Определено в заголовочном файле <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 ) ; .
1) Функция парсинга - strtof .
2) Функция парсинга - strtod .
3) Функция парсинга - strtold .
4) Функция парсинга - strtod32 .
5) Функция парсинга - strtod64 .
6) Функция парсинга - strtod128 .

Функции, возвращающие значения десятичных чисел с плавающей запятой, объявляются тогда и только тогда, когда реализация предопределяет __STDC_IEC_60559_DFP__ (то есть реализация поддерживает десятичные числа с плавающей запятой).

(начиная с 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