ldiv ()-lldiv ()- 执行长整型和长整型除法
格式 (ldiv())
#include <stdlib.h>
ldiv_t ldiv(long int numerator, long int denominator);格式 (lldiv())
#include <stdlib.h>
lldiv_t lldiv(long long int numerator, long long int denominator);语言级别
ANSI
线程安全
是
但是,只有函数版本是线程安全的。 宏版本不是线程安全的。
描述
ldiv() 函数计算 分子 除以 分母的商和余数。
返回值
ldiv() 函数返回类型为 ldiv_t的结构,其中包含商 (long int quot) 和余数 (long int rem)。 如果无法表示该值,那么返回值未定义。 如果 分母 为 0,那么将发生异常。
lldiv() 函数通过 分母 参数计算 numerator 参数的商和余数。
lldiv() 函数返回类型为 lldiv_t 的结构,其中包含商和余数。 该结构定义为:struct lldiv_t
{
long long int quot; /* quotient */
long long int rem; /* remainder */
};如果除法不准确,则得到的商的符号是代数商的符号,得到的商的量级是小于代数商的量级的最大长整数。 如果无法表示结果 (例如,如果 分母 是 0) ,那么行为未定义。示例
此示例使用
ldiv() 来计算一组两个红利和两个除数的商和余数。#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long int num[2] = {45,-45};
long int den[2] = {7,-7};
ldiv_t ans; /* ldiv_t is a struct type containing two long ints:
'quot' stores quotient; 'rem' stores remainder */
short i,j;
printf("Results of long division:\n");
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
{
ans = ldiv(num[i], den[j]);
printf("Dividend: %6ld Divisor: %6ld", num[i], den[j]);
printf(" Quotient: %6ld Remainder: %6ld\n", ans.quot, ans.rem);
}
}
/******************** Expected output: **************************
Results of long division:
Dividend: 45 Divisor: 7 Quotient: 6 Remainder: 3
Dividend: 45 Divisor: -7 Quotient: -6 Remainder: 3
Dividend: -45 Divisor: 7 Quotient: -6 Remainder: -3
Dividend: -45 Divisor: -7 Quotient: 6 Remainder: -3
*/