abs , div , labs , ldiv , imul_dbl , umul_dbl , llabs 或 lldiv 子例程

用途

计算整数的绝对值,除法和双精度乘法。

标准 C 库 (libc.a)

语法

#include <stdlib.h>
int abs ( i  )
int i;
#include <stdlib.h>
long labs ( i )
long i;
#include <stdlib.h>
div_t div ( Numerator,  Denominator)
int Numerator: Denominator;
#include <stdlib.h>
void imul_dbl ( i,  j,  Result)
long i, j;
long *Result;
#include <stdlib.h>
ldiv_t ldiv (Numerator, Denominator)
long Numerator: Denominator;
#include <stdlib.h>
void umul_dbl (i, j, Result)
unsigned long i, j;
unsigned long *Result;
#include <stdlib.h>
long long int llabs(i)
long long int i;
#include <stdlib.h>
lldiv_t lldiv (Numerator, Denominator)
long long int Numerator, Denominator;

描述

abs 子例程返回其整数操作数的绝对值。

注: 双补整数可以保留绝对值过大而无法保留的负数。 当给定这个最大负值时, abs 子例程返回相同的值。

div 子例程计算由 Numator 参数表示的数除以 Denominator 参数指定的数的商和余数。 如果除法不准确,则得到的商的符号是代数商的符号,得到的商的幅度是小于代数商的幅度的最大整数。 如果无法表示结果 (例如,如果分母为 0) ,那么行为未定义。

包含 labs ldiv 子例程是为了与 ANSI C 库兼容,并接受长整数作为参数,而不是整数。

imul_dbl 子例程计算两个带符号的 longs i j 的乘积,并将双长产品存储到由 Result 参数指向的两个带符号的 longs 的数组中。

umul_dbl 子例程计算两个无符号长整型的产品 i j ,并将双无符号长整型产品存储到由 Result 参数指向的两个无符号长整型的数组中。

llabslldiv 子例程计算长整型整数的绝对值和除法。 这些子例程在与 absdiv 子例程相同的限制下运行。

注: 当给定最大负值时, llabs 子例程 (如 abs 子例程) 返回相同的值。

参数

描述
i 对于 abs 子例程,指定一些整数; 对于 labsimul_dbl ,指定 一些长整数; 对于 umul_dbl 子例程,指定一些无符号长整数; 对于 llabs 子例程,指定一些长整数。
分子 对于 div 子例程,指定一些整数; 对于 ldiv 子例程,指定一些长整数; 对于 lldiv,指定一些长整数。
j 对于 imul_dbl 子例程,指定一些长整数; 对于 umul_dbl 子例程,指定一些无符号长整数。
分母 对于 div 子例程,指定一些整数; 对于 ldiv 子例程,指定一些长整数; 对于 lldiv,指定一些长整数。
结果 对于 imul_dbl 子例程,指定一些长整数; 对于 umul_dbl 子例程,指定一些无符号长整数。

返回值

abslabsllabs 子例程返回绝对值。 imul_dblumul_dbl 子例程没有返回值。 div 子例程返回类型为 div_t的结构。 ldiv 子例程返回类型为 ldiv_t的结构,该结构包含商和余数。 结构显示为:

struct ldiv_t {
  int quot; /* quotient */
  int rem;  /* remainder */
};

lldiv 子例程返回类型为 lldiv_t的结构,该结构包含商和余数。