isnan
, _isnan
, _isnanf
Tests if a floating-point value is a NaN ("Not a Number").
Syntax
int isnan(
/* floating-point */ x
); /* C-only macro */
int _isnan(
double x
);
int _isnanf(
float x
); /* x64 only */
template <class T>
bool isnan(
T x
) throw(); /* C++ only */
Parameters
x
The floating-point value to test.
Return value
In C, the isnan
macro and the _isnan
and _isnanf
functions return a non-zero value if the argument x
is a NaN; otherwise they return 0.
In C++, the isnan
template function returns true
if the argument x
is a NaN; otherwise it returns false
.
Remarks
Because a NaN value doesn't compare as equal to itself or to any other NaN value, to detect one, you must use one of these functions or macros. A NaN is generated when the result of a floating-point operation can't be represented in IEEE-754 floating-point format for the specified type. For information about how a NaN is represented for output, see printf
.
When compiled as C++, the isnan
macro isn't defined, and an isnan
template function is defined instead. It behaves the same way as the macro, but returns a value of type bool
instead of an integer.
The _isnan
and _isnanf
functions are Microsoft-specific. The _isnanf
function is only available when compiled for x64.
Requirements
Routine | Required header (C) | Required header (C++) |
---|---|---|
isnan , _isnanf |
<math.h> | <math.h> or <cmath> |
_isnan |
<float.h> | <float.h> or <cfloat> |
For more compatibility information, see Compatibility.
See also
Math and floating-point support
fpclassify
_fpclass
, _fpclassf
isfinite
, _finite
, _finitef
isinf
isnormal