abs, labs, llabs, imaxabs

来自cppreference.com
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
abslabsllabsimaxabs
(C99)(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小运算
指数函数
(C23)
(C99)
(C99)
(C23)
(C23)
(C99)
(C99)(C23)
(C23)
(C23)
幂函数
(C99)
(C23)
(C23)
(C99)
(C23)
(C23)
三角及双曲函数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
误差及伽马函数
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮点操作函数
(C99)(C99)
(C99)(C23)
(C99)
窄化运算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量与量指数函数
十进制重编码函数
全序与载荷函数
分类
(C99)
(C99)
(C99)
(C23)
类型
宏常量
 
定义于头文件 <stdlib.h>
int        abs( int n );
long       labs( long n );
long long llabs( long long n );
(C99 起)
定义于头文件 <inttypes.h>
intmax_t imaxabs( intmax_t n );
(C99 起)

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

参数

n - 整数值

返回值

n 的绝对值(即 |n| ),若它能表示。

注意

在补码中,最负的值的绝对值处于对应整数范围外,例如对于 32 位补码类型整数, INT_MIN 为 -2147483648 ,但其绝对值应有的结果是 2147483648 ,大于 INT_MAX ,其值为 2147483647 。

示例

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
int main(void)
{
    printf("abs(+3) = %d\n", abs(+3));
    printf("abs(-3) = %d\n", abs(-3));
 
//  printf("%+d\n", abs(INT_MIN)); // 在补码系统上是未定义行为
}

输出:

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

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.8.2.1 The imaxabs function (p: 218)
  • 7.22.6.1 The abs, labs and llabs functions (p: 356)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.8.2.1 The imaxabs function (p: 199-200)
  • 7.20.6.1 The abs, labs and llabs functions (p: 320)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.10.6.1 The abs function
  • 4.10.6.3 The labs function

参阅

(C99)(C99)
计算浮点值的绝对值( |x|
(函数)
(C99)(C99)(C99)
计算复数的模(绝对值)
(函数)