D は、整数と浮動小数点定数の基本データ型を提供しています。算術演算は、D プログラム内の整数に対してのみ実行可能です。D では、データ構造を初期化するために浮動小数点定数を使用できますが、浮動小数点算術演算の使用は許可されていません。D は、プログラムの記述用として、32 ビットと 64 ビットのデータモデルを提供しています。プログラムの実行時には、稼働中のオペレーティングシステムカーネルに関連付けられたネイティブデータモデルが使用されます。システムのネイティブデータモデルは、isainfo -b コマンドで確認できます。
以下の表に、2 つのデータモデルの整数型名とサイズを一覧します。整数は常に、システムのネイティブバイトエンコーディングの順番で、2 の補数として表現されます。
表 2–2 D の整数データ型
型名 |
サイズ (32 ビット) |
サイズ (64 ビット) |
---|---|---|
char |
1 バイト |
1 バイト |
short |
2 バイト |
2 バイト |
int |
4 バイト |
4 バイト |
long |
4 バイト |
8 バイト |
long long |
8 バイト |
8 バイト |
整数型の前には、修飾子 signed または unsigned が付けられます。符号修飾子が存在しない場合、その型は符号付き (signed) であると見なされます。D コンパイラでは、以下のような型の別名も使用できます。
表 2–3 D 整数型の別名
型名 |
説明 |
---|---|
int8_t |
1 バイトの符号付き整数 |
int16_t |
2 バイトの符号付き整数 |
int32_t |
4 バイトの符号付き整数 |
int64_t |
8 バイトの符号付き整数 |
intptr_t |
ポインタと同じサイズの符号付き整数 |
uint8_t |
1 バイトの符号なし整数 |
uint16_t |
2 バイトの符号なし整数 |
uint32_t |
4 バイトの符号なし整数 |
uint64_t |
8 バイトの符号なし整数 |
uintptr_t |
ポインタと同じサイズの符号なし整数 |
これらの別名は、1 つ前の表に示した基本型と対応しており、データモデルごとに定義されています。たとえば、型名 uint8_t は、unsigned char 型の別名です。D プログラム内で使用する型の別名を独自に定義する方法については、第 8 章型と定数の定義を参照してください。
D の浮動小数点型は、ANSI-C の宣言と型に互換性があります。D では、浮動小数点演算子はサポートされていませんが、printf() 関数を使って、浮動小数点型データオブジェクトのトレースおよび書式設定を行うことができます。使用可能な浮動小数点型は、次の表のとおりです。
表 2–4 D の浮動小数点データ型
型名 |
サイズ (32 ビット) |
サイズ (64 ビット) |
---|---|---|
float |
4 バイト |
4 バイト |
double |
8 バイト |
8 バイト |
long double |
16 バイト |
16 バイト |
D では、ASCII 文字列を表す特殊な string 型も使用できます。文字列については、第 6 章文字列で詳しく説明します。