Div t

div_tは、C言語の標準ヘッダーstdlib.hおよびC++のcstdlibに定義されている構造体である。
int型の除算を行うdiv関数を利用した返り値として用いられる。
除算を行った際の商と剰余を保持する。

 形式 
以下はC言語とC++での実装の一例である。
typedef struct {
    int quot;
    int rem;
} div_t;
quotが商、remが剰余を表す。

 C言語におけるdiv_t 
 div関数 
div_t構造体は、div関数の返り値として用いられる。以下はdiv関数の形式である。
#include <stdlib.h>
div_t div (int numer, int denom);

 コード例 
C言語でのコード例を以下に示す。このソースコードはcplusplus.comより。
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* div, div_t */

int main (void)
{
  div_t divresult;
  divresult = div (38,5);
  printf ("38 div 5 => %d, remainder %d.\n", divresult.quot, divresult.rem);
  return 0;
}
上記のコードをコンパイル・実行すると、以下の文字列が出力される。
 38 div 5 => 7, remainder 3.

 C++におけるdiv_t 
 div関数 
div関数は、後述するldiv_tとlldiv_t構造体のオーバーライドも存在する。
#include <cstdlib>
  div_t div (      int numer,       int denom);
 ldiv_t div (     long numer,      long denom);
lldiv_t div (long long numer, long long denom);

 コード例 
C++でのコード例を以下に示す。このソースコードはcplusplus.comにあったソースコードのヘッダを書き換えたもの。
#include <cstdio>
#include <cstdlib>

int main ()
{
  div_t divresult;
  divresult = div (38,5);
  printf ("38 div 5 => %d, remainder %d.\n", divresult.quot, divresult.rem);
  return 0;
}
上記のコードをコンパイル・実行すると、以下の文字列が出力される。
 38 div 5 => 7, remainder 3.

 類似の構造体 
 ldiv_t 
ldiv_t構造体はdiv_t構造体のデータがint型であったところをlong型に置き換えたもの。
ldiv_t構造体のための関数ldivも存在する。

以下はldiv_t構造体の実装の一例である。
typedef struct {
    long quot;
    long rem;
} ldiv_t;

 lldiv_t 
lldiv_t構造体はdiv_t構造体のデータをlong long型に置き換えたもの。
ldiv_t同様こちらも関数lldivが存在する。

以下はその実装の一例である。
typedef struct {
    long long quot;
    long long rem;
} lldiv_t;

 imaxdiv_t 
imaxdiv_t構造体は、div_t構造体のデータ型をintmax_t型に置き換えたもの。
imaxdiv_tを返り値とする関数imaxdivも存在する。

以下はその実装の一例である。
typedef struct {
    intmax_t quot;
    intmax_t rem;
} imaxdiv_t;

 注釈 

 関連項目 
C言語
C++
標準Cライブラリ

 外部リンク 
C言語関数辞典のdiv関数の記事
cplusplus.comのdiv_tの記事

Category:標準Cライブラリ