div() — 商および剰余の計算

フォーマット

#include <stdlib.h>
div_t div(int numerator, int denominator);

言語レベル

ANSI

スレッド・セーフ

はい

ただし、関数バージョンのみがスレッド・セーフです。マクロ・バージョンはスレッド・セーフではありません。

説明

div() 関数は、numeratordenominator で割った商および剰余を計算します。

戻り値

div() 関数は、商 int quot および剰余 int rem の両方を含む型 div_t の構造体を戻します。戻り値が表せない場合は、その値は予期できません。 denominator0 の場合は、例外が起こります。

この例では、div() を使用して、2 つの被除数と 2 つの除数からなる 1 組のセットの商と剰余を計算します。
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
   int num[2] = {45,-45};
   int den[2] = {7,-7};
   div_t ans;   /* div_t is a struct type containing two ints:
                   'quot' stores quotient; 'rem' stores remainder */
   short i,j;
 
   printf("Results of division:¥n");
   for (i = 0; i < 2; i++)
      for (j = 0; j < 2; j++)
      {
         ans = div(num[i],den[j]);
         printf("Dividend: %6d  Divisor: %6d", num[i], den[j]);
         printf("  Quotient: %6d  Remainder: %6d¥n", ans.quot, ans.rem);
      }
}
 
/*****************  Output should be similar to:  *****************
 
Results of 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
 
**********************************************************/