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
Défini dans l'en-tête <math.h>
float nanf ( const char * arg ) ;
(1) (depuis C99)
double nan ( const char * arg ) ;
(2) (depuis C99)
long double nanl ( const char * arg ) ;
(3) (depuis C99)
_Decimal32  nand32 ( const char * arg ) ;
(4) (depuis C23)
_Decimal64  nand64 ( const char * arg ) ;
(5) (depuis C23)
_Decimal128 nand128 ( const char * arg ) ;
(6) (depuis C23)

Convertit la chaîne de caractères définie par l'implémentation arg en la valeur NaN silencieuse correspondante, comme en appelant la fonction d'analyse appropriée strtoX , comme suit :

  • L'appel nan ( "n-char-sequence" ) , où n-char-sequence est une séquence de chiffres, de lettres latines et de tirets bas, est équivalent à l'appel /*strtoX*/ ( "NAN(n-char-sequence)" , ( char ** ) NULL ) ; .
  • L'appel nan ( "" ) est équivalent à l'appel /*strtoX*/ ( "NAN()" , ( char ** ) NULL ) ; .
  • L'appel nan ( "string" ) , où string n'est ni une n-char-sequence ni une chaîne vide, est équivalent à l'appel /*strtoX*/ ( "NAN" , ( char ** ) NULL ) ; .
1) La fonction d'analyse est strtof .
2) La fonction d'analyse est strtod .
3) La fonction d'analyse est strtold .
4) La fonction d'analyse est strtod32 .
5) La fonction d'analyse est strtod64 .
6) La fonction d'analyse est strtod128 .

Les fonctions renvoyant des valeurs décimales à virgule flottante sont déclarées si et seulement si l'implémentation prédéfinit __STDC_IEC_60559_DFP__ (c'est-à-dire que l'implémentation prend en charge les nombres décimaux à virgule flottante).

(depuis C23)

Table des matières

Paramètres

arg - chaîne de caractères étroite identifiant le contenu d'un NaN

Valeur de retour

La valeur NaN silencieuse qui correspond à la chaîne d'identification arg ou zéro si l'implémentation ne prend pas en charge les NaN silencieux.

Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559), elle prend également en charge les NaN silencieux.

Gestion des erreurs

Cette fonction n'est soumise à aucune des conditions d'erreur spécifiées dans math_errhandling .

Exemple

#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);
}

Sortie possible :

nan("1")   = nan (7ff8000000000001)
nan("2")   = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.12.11.2 Les fonctions nan (p: 186-187)
  • F.10.8.2 Les fonctions nan (p: 386)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.12.11.2 Les fonctions nan (p: 256)
  • F.10.8.2 Les fonctions nan (p: 529)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.12.11.2 Les fonctions nan (p: 237)
  • F.9.8.2 Les fonctions fabs (p: 465)

Voir aussi

(C99)
vérifie si le nombre donné est NaN
(macro fonction)
(C99)
évalue à un NaN silencieux de type float
(constante macro)
Documentation C++ pour nanf , nan , nanl