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言語でのコード例を以下に示す。[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;
注釈
関連項目
外部リンク
- C言語関数辞典のdiv関数の記事
- cplusplus.comのdiv_tの記事