div t

出典: フリー百科事典『ウィキペディア(Wikipedia)』

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言語でのコード例を以下に示す。[1]

#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++でのコード例を以下に示す。[2]

#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;

注釈[編集]

  1. ^ このソースコードはcplusplus.comより。
  2. ^ このソースコードはcplusplus.comにあったソースコードのヘッダを書き換えたもの。

関連項目[編集]

外部リンク[編集]