C 参考手册

位置:首页 > C 参考手册 >数值 >常用数学函数 > abs, labs, llabs, imaxabs

定义于头文件 <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 standard (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 standard (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 standard (ISO/IEC 9899:1990):
  • 4.10.6.1 The abs function
  • 4.10.6.3 The labs function

参阅

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