Dはプラットフォームに関係なくいつも同じサイズの基本型を数多く提供します。
唯一の例外は可能な限り最高の精度を提供するreal型です。
アプリケーションが32-bitシステム用にコンパイルされたか、
64-bitシステム用にコンパイルされたかで整数型のサイズに違いはありません。
| type | size |
|---|---|
bool | 8-bit |
byte, ubyte, char | 8-bit |
short, ushort, wchar | 16-bit |
int, uint, dchar | 32-bit |
long, ulong | 64-bit |
| type | size |
|---|---|
float | 32-bit |
double | 64-bit |
real | >= 64-bit (一般的には64-bit、しかしIntel x86 32-bit上では80-bit) |
uプレフィックスは符号なし型を示します。charはUTF-8 文字に変換され、
wcharはUTF-16 文字列で使われ、dcharはUTF-32 文字で使われます。
コンパイラはその精度が失われない場合のみ異なる型の変数間の変換を許可します。
ただし、浮動小数点数型間での変換(例えばdoubleからfloat)は可能です。
異なる型への変換をcast(型) myVar式を使って強制することもできます。
cast式は型システムを壊しうるものとして、細心の注意を払って使用する必要があります。
特別なキーワードautoは変数を作成し、式の右辺からその型を推定します。
auto myVar = 7ではmyVarの型をintと推測します。
明示的に指定された型を持つ他の変数と同様、この型は
コンパイル時に設定され、明示的に型を与えられた他の変数と同じように、
以降変更できないことに注意してください。
すべてのデータ型はそれが初期化された.initプロパティを持ちます。
これはすべての整数型で0、浮動小数点数でnan(非数)です。
整数と浮動小数点数型は、表現できる最大値である.maxプロパティを持ちます。
整数型は表現できる最小値である.minプロパティも持ち、一方で浮動小数点数型は最も小さい
正規化された0でない数として定義された.min_normalプロパティを持ちます。
浮動小数点数はプロパティ.nan (NaN値)、.infinity (無限値)、
.dig (精度の10進桁数)、.mant_dig (仮数部のビット数)なども持ちます。
どの型も文字列としてその名前を生成する.stringofプロパティを持ちます。
Dにおいて、インデックスは普通アドレス可能なすべてのメモリへのオフセットを表現するのに十分大きい型として
エイリアス型size_tを持ちます。
これは32-bitアーキテクチャでuint、64-bitでulongです。
assertはデバッグモードで条件を検証し、それが失敗したらAssertionErrorで中止する式です。
このためassert(0)は到達不能コードを示すのに使われます。