# 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 位补码类型整数， 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

### 参阅

fabs fabsf fabsl (C99)(C99) | 计算浮点值的绝对值（ \(\small{|x|}\)|x| ） (函数)
cabs cabsf cabsl (C99)(C99)(C99) | 计算复数的模（绝对值） (函数)