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>
#include <stdlib.h>
#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 参数指向的两个无符号长整型的数组中。
llabs 和 lldiv 子例程计算长整型整数的绝对值和除法。 这些子例程在与 abs 和 div 子例程相同的限制下运行。
注: 当给定最大负值时, llabs 子例程 (如 abs 子例程) 返回相同的值。
参数
| 项 | 描述 |
|---|---|
| i | 对于 abs 子例程,指定一些整数; 对于 labs 和 imul_dbl ,指定 一些长整数; 对于 umul_dbl 子例程,指定一些无符号长整数; 对于 llabs 子例程,指定一些长整数。 |
| 分子 | 对于 div 子例程,指定一些整数; 对于 ldiv 子例程,指定一些长整数; 对于 lldiv,指定一些长整数。 |
| j | 对于 imul_dbl 子例程,指定一些长整数; 对于 umul_dbl 子例程,指定一些无符号长整数。 |
| 分母 | 对于 div 子例程,指定一些整数; 对于 ldiv 子例程,指定一些长整数; 对于 lldiv,指定一些长整数。 |
| 结果 | 对于 imul_dbl 子例程,指定一些长整数; 对于 umul_dbl 子例程,指定一些无符号长整数。 |
返回值
abs, labs和 llabs 子例程返回绝对值。 imul_dbl 和 umul_dbl 子例程没有返回值。 div 子例程返回类型为 div_t的结构。 ldiv 子例程返回类型为 ldiv_t的结构,该结构包含商和余数。 结构显示为:
struct ldiv_t {
int quot; /* quotient */
int rem; /* remainder */
};lldiv 子例程返回类型为 lldiv_t的结构,该结构包含商和余数。