abs, labs, llabs, imaxabs

< c‎ | numeric‎ | math
在标头 <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 位补码类型 intINT_MIN-2147483648,但其绝对值应有的结果是 2147483648,大于 INT_MAX(其值为 2147483647)。

示例

#include <limits.h>
#include <stdio.h>
#include <stdlib.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

引用

  • C23 标准(ISO/IEC 9899:2024):
  • 7.8.2.1 The imaxabs function (第 TBD 页)
  • 7.22.6.1 The abs, labs and llabs functions (第 TBD 页)
  • C17 标准(ISO/IEC 9899:2018):
  • 7.8.2.1 The imaxabs function (第 159 页)
  • 7.22.6.1 The abs, labs and llabs functions (第 259 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.8.2.1 The imaxabs function (第 218 页)
  • 7.22.6.1 The abs, labs and llabs functions (第 356 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.8.2.1 The imaxabs function (第 199-200 页)
  • 7.20.6.1 The abs, labs and llabs functions (第 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)
计算复数的模(绝对值)
(函数)