Namespaces
Variants

abs, labs, llabs, imaxabs

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
abs labs llabs imaxabs
(C99) (C99)
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
定义于头文件 <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 INT_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 imaxabs 函数 (页: TBD)
  • 7.22.6.1 abs、labs 和 llabs 函数 (页: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.8.2.1 imaxabs 函数 (p: 159)
  • 7.22.6.1 abs、labs 和 llabs 函数 (p: 259)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.8.2.1 imaxabs 函数 (p: 218)
  • 7.22.6.1 abs、labs 和 llabs 函数 (p: 356)
  • C99标准(ISO/IEC 9899:1999):
  • 7.8.2.1 imaxabs函数(页码:199-200)
  • 7.20.6.1 abs、labs和llabs函数(页码:320)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 4.10.6.1 abs 函数
  • 4.10.6.3 labs 函数

参见

(C99) (C99)
计算浮点值的绝对值( |x|
(函数)
(C99) (C99) (C99)
计算复数的模
(函数)
C++ 文档 关于 abs