imaxabs
在头文件<math.h>中定义  |   |   | 
|---|---|---|
int abs( int n );  |   |   | 
long labs( long n );  |   |   | 
long long llabs( long long n );  |   | (since C99)  | 
Defined in header <inttypes.h>  |   |   | 
intmax_t imaxabs( intmax_t n );  |   | (since C99)  | 
计算整数的绝对值。如果结果不能由返回类型表示,则行为未定义。
参数
n  | -  | 整数值  | 
|---|
返回值
n (i.e. |n|)的绝对值,如果它是可表示的。
笔记
在2的补码系统中,最大负值的绝对值超出范围,例如对于32位2的补码类型int,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)); // undefined behavior on 2's complement systems
}输出:
abs(+3) = 3
abs(-3) = 3参考
- 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函数(p:199-200)
 - 7.20.6.1 abs,labs和llabs函数(p:320)
 
 - C89 / C90标准(ISO / IEC 9899:1990): 
- 4.10.6.1 abs函数
 - 4.10.6.3实验室功能
 
 
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

