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;
注釈
編集- ^ このソースコードはcplusplus.comより。
- ^ このソースコードはcplusplus.comにあったソースコードのヘッダを書き換えたもの。