Defined in header <math.h>
#define isunordered(x, y) /* implementation defined */
(since C99)

Determines if the floating point numbers x and y are unordered, that is, one or both are NaN and thus cannot be meaningfully compared with each other.


x - floating point value
y - floating point value

Return value

Nonzero integral value if either x or y is NaN, ​0​ otherwise.


#include <stdio.h>
#include <math.h>
int main(void)
    printf("isunordered(NAN,1.0) = %d\n", isunordered(NAN,1.0));
    printf("isunordered(1.0,NAN) = %d\n", isunordered(1.0,NAN));
    printf("isunordered(NAN,NAN) = %d\n", isunordered(NAN,NAN));
    printf("isunordered(1.0,0.0) = %d\n", isunordered(1.0,0.0));
    return 0;

Possible output:

isunordered(NAN,1.0) = 1
isunordered(1.0,NAN) = 1
isunordered(NAN,NAN) = 1
isunordered(1.0,0.0) = 0


  • C11 standard (ISO/IEC 9899:2011):
    • The isunordered macro (p: 261)
    • F.10.11 Comparison macros (p: 531)
  • C99 standard (ISO/IEC 9899:1999):
    • The isunordered macro (p: 242)

See also

classifies the given floating-point value
checks if the given number is NaN

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.