signbit

From cppreference.com
< c ‎ | numeric ‎ | math
Common mathematical functions
Types
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Nearest integer floating-point operations
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation functions
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent functions
Decimal re-encoding functions
Total order and payload functions
Classification
(C99)
(C99)
signbit
(C99)
(C23)
Macro constants
Special floating-point values
Arguments and return values
Error handling
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.

Parameters

arg - floating-point value

Return value

Nonzero integral value if arg is negative, 0 otherwise.

Notes

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.

Example

#include <math.h>
#include <stdio.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

References

  • C23 standard (ISO/IEC 9899:2024):
  • 7.12.3.6 The signbit macro (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
  • 7.12.3.6 The signbit macro (p: TBD)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.3.6 The signbit macro (p: 237)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.3.6 The signbit macro (p: 218)

See also

(C99) (C99)
computes absolute value of a floating-point value ( |x| )
(function)
produces a value with the magnitude of a given value and the sign of another given value
(function)