整数定数は、10 進法 (12345)、8 進法 (012345)、16 進法 (0x12345) で記述できます。8 進法 (base 8) の定数には、接頭辞としてゼロを付ける必要があります。16 進法 (base 16) の定数には、接頭辞として 0x または 0X を付ける必要があります。整数定数には、その値を表す型として、int、long、long long のうちもっとも小さい型が割り当てられます。負の値には、符号付きの型が割り当てられます。正の値で、符号付きの型で表すには値が大きすぎる場合は、符号なしの型が割り当てられます。D の型であることを明示的に指定するには、次のいずれかの接尾辞を割り当てます (すべての整数定数に共通)。
u または U |
コンパイラによって選択された unsigned 型 |
l または L |
long |
ul または UL |
unsigned long |
ll または LL |
long long |
ull または ULL |
unsigned long long |
浮動小数点定数は常に 10 進数で記述します。さらに、小数点 (12.345) か指数 (123e45)、またはその両方 (123.34e-5) を含める必要があります。浮動小数点定数には、デフォルトで double 型が割り当てられます。D の型であることを明示的に指定するには、次のいずれかの接尾辞を割り当てます (すべての浮動小数点定数に共通)。
f または F |
float |
l または L |
long double |
文字定数は単一の文字か、エスケープシーケンスを単一引用符で囲んだ形式 ('a') で記述します。文字定数には、int 型が割り当てられます。文字定数は、ASCII 文字集合内のその文字の値に対応する値を持つ整数定数と同等です。文字とその値の対応関係は、ascii(5) のマニュアルページで確認できます。文字定数には、以下の表に示す特殊なエスケープシーケンスを含めることもできます。D では、ANSI-C と同じエスケープシーケンスがサポートされています。
表 2–5 D の文字エスケープシーケンス
\a |
警告 |
\\ |
バックスラッシュ |
\b |
バックスペース |
\? |
疑問符 |
\f |
用紙送り |
\' |
単一引用符 |
\n |
改行 |
\” |
二重引用符 |
\r |
キャリッジリターン |
\0oo |
8 進数値 0oo |
\t |
水平タブ |
\xhh |
16 進数値 0xhh |
\v |
垂直タブ |
\0 |
NULL 文字 |
複数の文字指定子を 1 組の単一引用符で囲むことにより、整数のバイトを、対応する文字指定子に合わせて個別に初期化できます。これらのバイトは、文字定数の左から順に読み取られ、使用しているオペレーティング環境のネイティブの並び順 (エンディアン) で、整数に割り当てられます。1 つの文字定数に、最大 8 個の文字指定子を含めることができます。
文字列定数は、その長さを問わず、二重引用符で囲んだ形式 ("hello") で表されます。文字列定数には、改行文字をそのまま含めることはできません。改行文字を含めたい場合は、実際に改行文字を入力する代わりに、\n というエスケープシーケンスを入力します。文字列定数には、文字定数で使用できる特殊文字エスケープシーケンス (上記参照) を含めることができます。ANSI-C の場合と同じく、文字列は、NULL 文字 (\0) で終わる文字配列で表されます。この NULL 文字は、宣言された文字列定数ごとに暗黙的に挿入されるものです。文字列定数には、D の特殊な string 型が割り当てられます。D コンパイラは、文字列として宣言された文字配列の比較とトレースを行う特別な機能セットを提供しています。この機能セットについては、第 6 章文字列を参照してください。