คุณสามารถทดสอบว่าการใช้งานของคุณมีหรือไม่:
#include <math.h>
#ifdef NAN
#endif
#ifdef INFINITY
#endif
การมีอยู่ของINFINITY
รับประกันโดย C99 (หรืออย่างน้อยที่สุดแบบร่างล่าสุด) และ "ขยายเป็นนิพจน์คงที่ของประเภท float ที่แสดงค่าอินฟินิตี้ที่เป็นบวกหรือไม่ได้ลงนามถ้ามีมิฉะนั้นจะเป็นค่าคงที่บวกของประเภทโฟลตที่ล้นในเวลาแปล"
NAN
อาจกำหนดหรือไม่ก็ได้และ "ถูกกำหนดก็ต่อเมื่อการใช้งานรองรับ NaN แบบเงียบสำหรับประเภทโฟลตมันจะขยายเป็นนิพจน์คงที่ของประเภทโฟลตที่แสดงถึง NaN ที่เงียบ"
โปรดทราบว่าหากคุณกำลังเปรียบเทียบค่าทศนิยมให้ทำดังนี้
a = NAN;
ถึงอย่างนั้น
a == NAN;
เป็นเท็จ วิธีหนึ่งในการตรวจสอบ NaN คือ:
#include <math.h>
if (isnan(a)) { ... }
คุณยังสามารถทำได้: a != a
เพื่อทดสอบว่าa
เป็น NaN หรือไม่
นอกจากนี้ยังมีisfinite()
, isinf()
, isnormal()
และsignbit()
แมโครในmath.h
ใน C99
C99 ยังมีnan
ฟังก์ชั่น:
#include <math.h>
double nan(const char *tagp);
float nanf(const char *tagp);
long double nanl(const char *tagp);
(อ้างอิง: n1256).
เอกสาร INFINITY
เอกสาร NAN