命名空间
变体
操作

std::abs, std::labs, std::llabs, std::imaxabs

来自 cppreference.cn
< 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) (C++23 起为 constexpr)
long      abs( long num );
(2) (C++23 起为 constexpr)
long long abs( long long num );
(3) (C++11 起)
(C++23 起为 constexpr)
定义于头文件 <cstdlib>
long       labs( long num );
(4) (C++23 起为 constexpr)
long long llabs( long long num );
(5) (C++11 起)
(C++23 起为 constexpr)
定义于头文件 <cinttypes>
(6) (C++11 起)
(C++23 起为 constexpr)
(7) (C++11 起)
(C++23 起为 constexpr)

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

如果调用 std::abs 时使用无符号整型参数,且该参数不能通过整型提升转换为 int,则程序格式错误。

仅当 std::intmax_t扩展整型时,才在 <cinttypes> 中提供 std::abs 的重载 (6),用于 std::intmax_t

(C++11 起)

目录

[编辑] 参数

num - 整数值

[编辑] 返回值

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

[编辑] 注意

2 的补码系统中,最负值的绝对值超出范围,例如对于 32 位 2 的补码类型 intINT_MIN-2147483648,但本应得到的结果 2147483648 大于 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++ 标准。

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

[编辑] 参阅

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