Defined in header <math.h>
#define signbit(arg) /* implementation defined */
(since C99)

Determines if the given floating point number arg is negative. The macro returns an integral value.


arg - floating point value

Return value

Nonzero integral value if arg is negative, ​0​ otherwise.


This macro detects the sign bit of zeroes, infinities, and NaNs. Along with copysign, this macro is one of the only two portable ways to examine the sign of a NaN.


#include <stdio.h>
#include <math.h>
int main(void)
    printf("signbit(+0.0) = %d\n", signbit(+0.0));
    printf("signbit(-0.0) = %d\n", signbit(-0.0));

Possible output:

signbit(+0.0) = 0
signbit(-0.0) = 128


  • C11 standard (ISO/IEC 9899:2011):
    • The signbit macro (p: 237)
  • C99 standard (ISO/IEC 9899:1999):
    • The signbit macro (p: 218)

See also

computes absolute value of a floating-point value (\(\small{|x|}\)|x|)
produces a value with the magnitude of a given value and the sign of another given value
C++ documentation for signbit

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