Uygulamanızda bulunup bulunmadığını test edebilirsiniz:
#include <math.h>
#ifdef NAN
#endif
#ifdef INFINITY
#endif
Varlığı INFINITY
C99 (veya en azından en son taslak) ile garanti edilir ve "eğer mevcutsa pozitif veya işaretsiz sonsuzluğu temsil eden sabit bir float tipi ifadesine; aksi takdirde çeviri zamanında taşan pozitif bir float tipi sabitine genişler."
NAN
tanımlanabilir veya tanımlanmayabilir ve "ancak ve ancak uygulama kayan tip için sessiz NaN'leri destekliyorsa tanımlanır. Sessiz bir NaN'yi temsil eden sabit bir kayan nokta türü ifadesine genişler."
Kayan nokta değerlerini karşılaştırıyorsanız ve şunları yapın:
a = NAN;
o zaman bile,
a == NAN;
yanlış. NaN'yi kontrol etmenin bir yolu şudur:
#include <math.h>
if (isnan(a)) { ... }
Ayrıca şunları da yapabilirsiniz: NaN a != a
olup olmadığını test etmek için a
.
Orada da isfinite()
, isinf()
, isnormal()
ve signbit()
makrolar içinde math.h
C99.
C99 ayrıca şu nan
işlevlere sahiptir :
#include <math.h>
double nan(const char *tagp);
float nanf(const char *tagp);
long double nanl(const char *tagp);
(Referans: n1256).
Docs INFINITY
Docs NAN