名前空間
変種
操作

nan, nanf, nanl

提供: cppreference.com
< c‎ | numeric‎ | math
 
 
 
一般的な数学関数
関数
基本操作
(C99)
(C99)
(C99)
(C99)
(C99)
nannanfnanl
(C99)(C99)(C99)
指数関数
(C99)
(C99)
(C99)
(C99)
冪関数
(C99)
(C99)
三角関数と双曲線関数
(C99)
(C99)
(C99)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
最も近い整数
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
浮動小数点操作関数
(C99)(C99)
(C99)
(C99)
分類
(C99)
(C99)
(C99)
(C99)(C99)
マクロ定数
 
ヘッダ <math.h> で定義
float       nanf( const char* arg );
(C99以上)
double      nan( const char* arg );
(C99以上)
long double nanl( const char* arg );
(C99以上)

以下のように、それぞれ strtofstrtod または strtold を呼んだかのように、処理系定義の文字列 arg を対応する quiet NaN の値に変換します。

呼び出し nan("n-char-sequence")strtod("NAN(n-char-sequence)", (char**)NULL); の呼び出しと同等です。 ただし n-char-sequence は数字、ラテン文字およびアンダースコアの並びです。

呼び出し nan("") は呼び出し strtod("NAN()", (char**)NULL); と同等です。

呼び出し nan("string") は呼び出し strtod("NAN", (char**)NULL); と同等です。 ただし string は n-char-sequence でも空文字列でもない文字列です。

目次

[編集] 引数

arg - NaN の内容を表すナロー文字列

[編集] 戻り値

識別文字列 arg に対応する quiet NaN の値、または処理系が quiet NaN をサポートしない場合はゼロ。

[編集]

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

[編集] 関連項目

(C99)
指定された数値が NaN かどうか調べます
(関数) [edit]
(C99)
float 型の quiet NaN に評価されるマクロ
(マクロ定数) [edit]
nanf, nan, nanlC++リファレンス