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にあったソースコードのヘッダを書き換えたもの。

関連項目

編集

外部リンク

編集