std::abs(int), 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)
 
定义于头文件 <cstdlib>
定义于头文件 <cmath>
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 起)

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

若以不能由整型提升转换成 int 的无符号整型参数调用 std::abs ,则程序为谬构。

<cinttypes> 中提供 std::absstd::intmax_t 的重载,当且仅当 std::intmax_t 为扩展整数类型。

(C++11 起)

参数

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

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR 应用于 出版时的行为 正确行为
LWG 2192 C++98 std::abs 的重载不一致地声明于二个头文件 在两个头文件中都声明这些重载

参阅

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