Defined in header <cstdlib>  

Defined in header <cmath>  
int abs( int num );  (1)  (constexpr since C++23) 
long abs( long num );  (2)  (constexpr since C++23) 
long long abs( long long num );  (3)  (since C++11) (constexpr since C++23) 
Defined in header <cstdlib>  
long labs( long num );  (4)  (constexpr since C++23) 
long long llabs( long long num );  (5)  (since C++11) (constexpr since C++23) 
Defined in header <cinttypes>  
std::intmax_t abs( std::intmax_t num );  (6)  (since C++11) (constexpr since C++23) 
std::intmax_t imaxabs( std::intmax_t num );  (7)  (since C++11) (constexpr since C++23) 
Computes the absolute value of the integer number num
. The behavior is undefined if the result cannot be represented by the return type.
If std::abs
is called with an unsigned integral argument that cannot be converted to int by integral promotion, the program is illformed.
Overload (6) of  (since C++11) 
num    integer value 
The absolute value of num
(i.e. num
), if it is representable.
In 2's complement systems, the absolute value of the mostnegative value is out of range, e.g. for 32bit 2's complement type int, INT_MIN
is 2147483648
, but the wouldbe result 2147483648
is greater than INT_MAX
, which is 2147483647
.
#include <climits> #include <cstdlib> #include <iostream> int main() { std::cout << std::showpos << "abs(+3) = " << std::abs(3) << '\n' << "abs(3) = " << std::abs(3) << '\n'; // std::cout << std::abs(INT_MIN); // undefined behavior on 2's complement systems }
Output:
abs(+3) = +3 abs(3) = +3
The following behaviorchanging defect reports were applied retroactively to previously published C++ standards.
DR  Applied to  Behavior as published  Correct behavior 

LWG 2192  C++98  overloads of std::abs wereinconsistently declared in two headers  declared these overloads in both headers 
(C++11)(C++11)  absolute value of a floating point value (\(\small{x}\)x) (function) 
returns the magnitude of a complex number (function template) 

applies the function abs to each element of valarray (function template) 

C documentation for abs, labs, llabs 
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/abs