Namespaces
Variants

NAN

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(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
NAN DEC_NAN
(C99) (C23)
Arguments and return values
Error handling
Fast operation indicators
定義先ヘッダ <math.h>
#define NAN /*implementation defined*/
(C99以降)

マクロ NAN float 型の定数式に展開され、quiet not-a-number (QNaN) 値を評価します。実装がQNaNをサポートしていない場合、このマクロ定数は定義されません。

NaNの表示形式は実装定義です。

目次

注記

多くの異なるNaN値が存在し、それらはペイロードと符号ビットによって区別されます。 NAN マクロによって生成されるNaNのペイロードの内容と符号ビットは実装定義です。

NaNおよびIEEE形式の表示に使用されるスタイルを示します。

#include <inttypes.h>
#include <math.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
    const double f = NAN;
    uint64_t fn;
    memcpy(&fn, &f, sizeof f);
    printf("NAN:   %f %" PRIx64 "\n", f, fn);
}

出力例:

NAN:   nan 7ff8000000000000

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.12/5 NAN (p: TBD)
  • F.10/11/13 NAN (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.12/5 NAN (p: TBD)
  • F.10/11/13 NAN (p: TBD)
翻訳のポイント: - 「C17 standard」→「C17規格」と翻訳 - HTMLタグ、属性、 タグ内のテキストは翻訳せず保持 - 「NAN」はC++の専門用語として翻訳せず保持 - 「p: TBD」はそのまま保持(ページ番号が未定のため) - 元のフォーマットと構造を完全に保持
  • C11規格 (ISO/IEC 9899:2011):
  • 7.12/5 NAN (p: 232)
  • F.10/11/13 NAN (p: 518)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.12/5 NAN (p: 213)
  • F.9/11/13 NAN (p: 455)

関連項目

(C99) (C99) (C99)
NaN(非数)を返す
(関数)
(C99)
指定された数値がNaNかどうかをチェックする
(関数マクロ)