命名空间
变体
操作

std::abs、std::labs、std::llabs、std::imaxabs

来自 cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
常见数学函数
函数
基本操作
abs(int)labsllabsimaxabs
(C++11)  
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数函数
(C++11)
(C++11)

(C++11)
(C++11)
幂函数
(C++11)
(C++11)
三角函数
双曲函数
(C++11)
(C++11)
(C++11)

误差和伽马函数
(C++11)
(C++11)
(C++11)
(C++11)
最接近整数的浮点运算
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮点操作函数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分类和比较
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型
(C++11)
(C++11)
(C++11)
宏常量
分类
(C++11)(C++11)(C++11)(C++11)(C++11)


 
定义在头文件 <cstdlib>
定义在头文件 <cmath>
int       abs( int num );
(1) (constexpr 自 C++23 起)
long      abs( long num );
(2) (constexpr 自 C++23 起)
long long abs( long long num );
(3) (自 C++11 起)
(constexpr 自 C++23 起)
定义在头文件 <cstdlib>
long       labs( long num );
(4) (constexpr 自 C++23 起)
long long llabs( long long num );
(5) (自 C++11 起)
(constexpr 自 C++23 起)
定义在头文件 <cinttypes>
(6) (自 C++11 起)
(constexpr 自 C++23 起)
(7) (自 C++11 起)
(constexpr 自 C++23 起)

计算整数 num 的绝对值。如果结果无法用返回值类型表示,则行为未定义。

如果 std::abs 被调用时使用的是一个无符号整型参数,该参数无法通过 整型提升 转换为 int,则程序将是非法的。

如果 std::intmax_t 是 扩展整型,则 <cinttypes> 中将提供用于 std::intmax_t 的 std::abs 的重载 (6)。

(自 C++11 起)

内容

[编辑] 参数

num - 整数值

[编辑] 返回值

num 的绝对值(即 |num|),如果可表示。

[编辑] 备注

二进制补码 系统中,最负值的绝对值超出了范围,例如对于 32 位二进制补码类型 int,INT_MIN 是 -2147483648,但可能的返回值 2147483648 大于 INT_MAX,INT_MAX 是 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
}

输出

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

[编辑] 缺陷报告

以下更改行为的缺陷报告被追溯应用到先前发布的 C++ 标准。

DR 应用于 发布的行为 正确的行为
LWG 2192 C++98 std::abs 的重载是
在两个头文件中声明不一致
在两个头文件中声明这些重载
这两个头文件中

[编辑] 另请参阅

浮点值的绝对值 (|x|)
(函数) [编辑]
返回复数的模
(函数模板) [编辑]
将函数 abs 应用于 valarray 的每个元素
(函数模板) [编辑]
C 文档 for abs, labs, llabs