abs, labs, llabs, imaxabs

From cppreference.com
< c‎ | numeric‎ | math
Common mathematical functions
Functions
Basic operations
abslabsllabsimaxabs
(C99)(C99)
(C99)(C99)
(C99)
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
(C99)
(C99)
(C23)
(C23)
(C23)
Exponential functions
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Power functions
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
(C23)
Trigonometric and hyperbolic functions
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nearest integer floating-point
(C99)(C99)(C99)
(C23)
(C99)

(C99)
(C99)(C99)(C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
(C99)(C99)
(C99)(C23)
(C99)
(C99)(C99)
(C23)(C23)
(C99)
(C23)
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
(C23)
(C23)
Decimal re-encoding functions
(C23)
(C23)
(C23)
(C23)
Total order and payload functions
(C23)
(C23)
Classification
(C99)
(C23)
(C99)
(C99)
(C99)
(C99)
(C99)
(C23)
(C23)
(C99)
(C99)
(C99)
(C99)
(C23)
(C23)

Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
(C99)(C23)
Arguments and return values
(C99) (C99) (C99) (C99) (C99)
Error handling
Fast operation indicators
Defined in header <stdlib.h>
int        abs( int n );
long       labs( long n );
long long llabs( long long n );
(since C99)
Defined in header <inttypes.h>
intmax_t imaxabs( intmax_t n ) ;
(since C99)

Computes the absolute value of an integer number. The behavior is undefined if the result cannot be represented by the return type.

Parameters

n - integer value

Return value

The absolute value of n (i.e. |n|), if it is representable.

Notes

In 2's complement systems, the absolute value of the most-negative value is out of range, e.g. for 32-bit 2's complement type int, INT_MIN is -2147483648, but the would-be result 2147483648 is greater than INT_MAX, which is 2147483647

Example

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    printf("abs(+3) = %d\n", abs(+3));
    printf("abs(-3) = %d\n", abs(-3));
 
//  printf("%+d\n", abs(INT_MIN)); // undefined behavior on 2's complement systems
}

Output:

abs(+3) = 3
abs(-3) = 3

References

  • C23 standard (ISO/IEC 9899:2024):
  • 7.8.2.1 The imaxabs function (p: TBD)
  • 7.22.6.1 The abs, labs and llabs functions (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
  • 7.8.2.1 The imaxabs function (p: 159)
  • 7.22.6.1 The abs, labs and llabs functions (p: 259)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.8.2.1 The imaxabs function (p: 218)
  • 7.22.6.1 The abs, labs and llabs functions (p: 356)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.8.2.1 The imaxabs function (p: 199-200)
  • 7.20.6.1 The abs, labs and llabs functions (p: 320)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.10.6.1 The abs function
  • 4.10.6.3 The labs function

See also

(C99)(C99)
computes absolute value of a floating-point value (|x|)
(function)
(C99)(C99)(C99)
computes the magnitude of a complex number
(function)