非常教程

C参考手册

数值 | Numerics

abs

Defined in header <stdlib.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

-

integer value

返回值

n(ie |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实验室功能
C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。