C++ 参考手册

位置:首页 > C++ 参考手册 >数值库 >常用数学函数 > std::abs(int), std::labs, std::llabs, std::imaxabs

定义于头文件 <cstdlib>
定义于头文件 <cmath>
(C++17 起)
int       abs( int n );
long      abs( long n );
long long abs( long long n );
(C++11 起)
定义于头文件 <cstdlib>
long       labs( long n );
long long llabs( long long n );
(C++11 起)
定义于头文件 <cinttypes>
(C++11 起)
(C++11 起)

计算整数的绝对值。若结果不能以返回类型表示则行为未定义。

若以满足 std::is_unsigned<X>::valuetrueX 类型参数调用 std::abs ,且 X 不能以整数提升转换成 int ,则程序为病式。

(C++17 起)

参数

n - 整数值

返回值

若可表示,则为 n 的绝对值(即 |n| )。

注意

补码系统中,最负值的绝对值在范围外,例如对于 32 位补码类型 int , INT_MIN 是 -2147483648 ,但本应有的结果 2147483648 大于 INT_MAX ,即 2147483647 。

示例

#include <iostream>
#include <cstdlib>
#include <climits>
 
int main()
{
    std::cout << "abs(+3) = " << std::abs(3) << '\n'
              << "abs(-3) = " << std::abs(-3) << '\n';
 
//  std::cout << abs(INT_MIN); // 补码系统上是未定义行为
}

输出:

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

参阅

浮点值的绝对值( |x|
(函数)
返回复数的模
(函数模板)
应用函数 std::abs 到 valarray 的每个元素
(函数模板)