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>
|
||
std::intmax_t abs( std::intmax_t n ); |
(C++11 起) | |
std::intmax_t imaxabs( std::intmax_t n ); |
(C++11 起) | |
计算整数的绝对值。若结果不能以返回类型表示则行为未定义。
若以满足 std::is_unsigned<X>::value 为 |
(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
参阅
(C++11)(C++11) |
浮点值的绝对值( |x| ) (函数) |
返回复数的模 (函数模板) | |
应用函数 std::abs 到 valarray 的每个元素 (函数模板) |