| Common mathematical functions | |||||||||||||||||||||||||||||||
| Mathematical special functions(C++17) | |||||||||||||||||||||||||||||||
| Mathematical constants(C++20) | |||||||||||||||||||||||||||||||
| Basic linear algebra algorithms(C++26) | |||||||||||||||||||||||||||||||
| Data-parallel types (SIMD)(C++26) | |||||||||||||||||||||||||||||||
| Floating-point environment(C++11) | |||||||||||||||||||||||||||||||
| Complex numbers | |||||||||||||||||||||||||||||||
Numeric array (valarray) | |||||||||||||||||||||||||||||||
| Pseudo-random number generation | |||||||||||||||||||||||||||||||
| Bit manipulation(C++20) | |||||||||||||||||||||||||||||||
| Saturation arithmetic(C++26) | |||||||||||||||||||||||||||||||
| Factor operations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
| Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
| Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| Functions | ||||||||||||||||
| Basic operations | ||||||||||||||||
| ||||||||||||||||
| Exponential functions | ||||||||||||||||
| Power functions | ||||||||||||||||
| Trigonometric and hyperbolic functions | ||||||||||||||||
| Error and gamma functions | ||||||||||||||||
| Nearest integer floating point operations | |||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||
| Floating point manipulation functions | |||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||
| Classification and comparison | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| Types | |||||||||||||||||||||||||||||||||||||||||
| Macro constants | |||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||
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) |
longlong abs(longlong num); | (3) | (since C++11) (constexpr since C++23) |
Defined in header <cstdlib> | ||
long labs(long num); | (4) | (constexpr since C++23) |
longlong llabs(longlong 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 numbernum. The behavior is undefined if the result cannot be represented by the return type.
Ifstd::abs is called with an unsigned integral argument that cannot be converted toint byintegral promotion, the program is ill-formed.
Overload(6) of | (since C++11) |
Contents |
| num | - | integer value |
The absolute value ofnum (i.e.|num|), if it is representable.
In2's complement systems, the absolute value of the most-negative value is out of range, e.g. for 32-bit 2's complement typeint,INT_MIN is-2147483648, but the would-be result2147483648 is greater thanINT_MAX, which is2147483647.
#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) = +3abs(-3) = +3
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2192 | C++98 | overloads ofstd::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)[edit] |
| returns the magnitude of a complex number (function template)[edit] | |
| applies the functionabs to each element of valarray (function template)[edit] | |
C documentation forabs,labs,llabs | |