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
*/

相关信息