Search code examples
cnanc89infinity

How to generate NaN, -Infinity and +Infinity in ANSI C?


I use ANSI C89 (not C++), and I want to generate NaN, -Infinity and +Infinity.

Is there any standard way (eg. standard macro)? Or is there any platform and compiler independent way to generate these numbers?

float f = 0.0 / 0.0; // Is f ALWAYS in any platform is NaN?

Solution

  • There is in C99, but not in previous standards AFAIK.

    In C99, you'll have NAN and INFINITY macros.

    From "Mathematics <math.h>" (§7.12) section

    The macro INFINITY expands to a constant expression of type float representing positive or unsigned infinity, if available; ...

    If you're stuck with ANSI C89, you're out of luck. See C-FAQ 14.9.