名稱空間
變體
操作

isnan

來自 cppreference.com
< c‎ | 數值‎ | 數學
 
 
 
常用數學函式
函式
基本操作
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大值/最小值操作
(C99)
(C99)
指數函式
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
冪函式
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角函式和雙曲函式
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最近整數浮點數
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮點數操作
(C99)(C99)
(C99)(C23)
(C99)
窄化操作
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子與量子指數
十進位制重新編碼函式
總序和載荷函式
分類
(C99)
isnan
(C99)
(C99)
(C23)
誤差函式和伽馬函式
(C99)
(C99)
(C99)
(C99)
型別
宏常量
特殊浮點值
(C99)(C23)
引數和返回值
錯誤處理
快速操作指示符
 
定義於標頭檔案 <math.h>
#define isnan(arg) /* 實現定義 */
(C99 起)

確定給定的浮點數 arg 是否為非數字(NaN)值。此宏返回一個整數值。

FLT_EVAL_METHOD 被忽略:即使引數以比其型別更寬的範圍和精度進行求值,它也會首先轉換為其語義型別,並且分類基於此(如果求值型別支援 NaN,而語義型別不支援,則這一點很重要)。

目錄

[編輯] 引數

arg - 浮點值

[編輯] 返回值

如果 arg 是 NaN,則返回非零整數值,否則返回 0

[編輯] 注意

存在許多不同的 NaN 值,具有不同的符號位和載荷,參見 nan

NaN 值從不與自身或與其他 NaN 值進行相等比較。複製 NaN 可能會改變其位模式。

另一種測試浮點值是否為 NaN 的方法是將其與自身進行比較:bool is_nan(double x) { return x != x; }

[編輯] 示例

#include <float.h>
#include <math.h>
#include <stdio.h>
 
int main(void)
{
    printf("isnan(NAN)         = %d\n", isnan(NAN));
    printf("isnan(INFINITY)    = %d\n", isnan(INFINITY));
    printf("isnan(0.0)         = %d\n", isnan(0.0));
    printf("isnan(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN / 2.0));
    printf("isnan(0.0 / 0.0)   = %d\n", isnan(0.0 / 0.0));
    printf("isnan(Inf - Inf)   = %d\n", isnan(INFINITY - INFINITY));
}

可能的輸出

isnan(NAN)         = 1
isnan(INFINITY)    = 0
isnan(0.0)         = 0
isnan(DBL_MIN/2.0) = 0
isnan(0.0 / 0.0)   = 1
isnan(Inf - Inf)   = 1

[編輯] 參考

  • C23 標準 (ISO/IEC 9899:2024)
  • 7.12.3.4 isnan 宏 (p: TBD)
  • C17 標準 (ISO/IEC 9899:2018)
  • 7.12.3.4 isnan 宏 (p: TBD)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.12.3.4 isnan 宏 (p: 236-237)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.12.3.4 isnan 宏 (p: 217)

[編輯] 另請參見

(C99)(C99)(C99)
返回 NaN(非數字)
(函式) [編輯]
對給定浮點值進行分類
(函式宏) [編輯]
檢查給定數字是否具有有限值
(函式宏) [編輯]
(C99)
檢查給定數字是否為無窮大
(函式宏) [編輯]
檢查給定數字是否為正常數
(函式宏) [編輯]
檢查兩個浮點值是否無序
(函式宏) [編輯]
C++ 文件 用於 isnan