Dプログラミング-リテラル
ソースコードの一部としてプログラムに入力される定数値は、 literals。
リテラルは、基本的なデータ型のいずれかであり、整数数値、浮動小数点数値、文字、文字列、およびブール値に分割できます。
繰り返しますが、リテラルは、定義後に値を変更できないことを除いて、通常の変数と同じように扱われます。
整数リテラル
整数リテラルは、次のタイプのいずれかになります。
Decimal 正規数表現を使用します。最初の桁は8進法を示すために予約されているため、0にすることはできません。これには0は含まれません。0はゼロです。
Octal 番号のプレフィックスとして0を使用します。
Binary プレフィックスとして0bまたは0Bを使用します。
Hexadecimal プレフィックスとして0xまたは0Xを使用します。
整数リテラルには、unsignedとlongのそれぞれについて、UとLの組み合わせである接尾辞を付けることもできます。接尾辞は大文字または小文字にすることができ、任意の順序にすることができます。
サフィックスを使用しない場合、コンパイラ自体は、値の大きさに基づいて、int、uint、long、およびulongから選択します。
整数リテラルの例を次に示します-
212 // Legal
215u // Legal
0xFeeL // Legal
078 // Illegal: 8 is not an octal digit
032UU // Illegal: cannot repeat a suffix
以下は、さまざまなタイプの整数リテラルの他の例です。
85 // decimal
0213 // octal
0x4b // hexadecimal
30 // int
30u // unsigned int
30l // long
30ul // unsigned long
0b001 // binary
浮動小数点リテラル
浮動小数点リテラルは、1.568のように10進法で、または0x91.bcのように16進法で指定できます。
10進法では、指数は文字eまたはEとそれに続く数字を追加することで表すことができます。たとえば、2.3e4は「2.3×10の4乗」を意味します。指数の値の前に「+」文字を指定できますが、効果はありません。たとえば、2.3e4と2.3e +4は同じです。
指数の値の前に追加された「-」文字は、「10の累乗」に意味を変更します。たとえば、2.3e-2は、「2.3を10で2の累乗で割った値」を意味します。
16進法では、値は0xまたは0Xで始まります。指数は、eまたはEではなくpまたはPで指定されます。指数は、「10の累乗」ではなく、「2の累乗」を意味します。たとえば、0xabc.defP4のP4は、「abc.deの2の4乗」を意味します。
浮動小数点リテラルの例を次に示します-
3.14159 // Legal
314159E-5L // Legal
510E // Illegal: incomplete exponent
210f // Illegal: no decimal or exponent
.e55 // Illegal: missing integer or fraction
0xabc.defP4 // Legal Hexa decimal with exponent
0xabc.defe4 // Legal Hexa decimal without exponent.
デフォルトでは、浮動小数点リテラルのタイプはdoubleです。fとFは浮動小数点数を意味し、L指定子は実数を意味します。
ブールリテラル
2つのブールリテラルがあり、それらは標準のDキーワードの一部です-
の値 true 真を表す。
の値 false falseを表します。
trueの値が1に等しく、falseの値が0に等しいと見なすべきではありません。
文字リテラル
文字リテラルは一重引用符で囲まれています。
文字リテラルは、プレーン文字(たとえば、「x」)、エスケープシーケンス(たとえば、「\ t」)、ASCII文字(たとえば、「\ x21」)、Unicode文字(たとえば、「\ u011e」)、または名前付き文字として(例: '\©'、 '\♥'、 '\€')。
Dには、バックスラッシュが前に付いている特定の文字があり、それらは特別な意味を持ち、改行(\ n)やタブ(\ t)のように表すために使用されます。ここに、そのようなエスケープシーケンスコードのいくつかのリストがあります-
エスケープシーケンス | 意味 |
---|---|
\\ | \ キャラクター |
\ ' | ' キャラクター |
\ " | " キャラクター |
\? | ?キャラクター |
\ a | アラートまたはベル |
\ b | バックスペース |
\ f | フォームフィード |
\ n | 改行 |
\ r | キャリッジリターン |
\ t | 水平タブ |
\ v | 垂直タブ |
次の例は、いくつかのエスケープシーケンス文字を示しています-
import std.stdio;
int main(string[] args) {
writefln("Hello\tWorld%c\n",'\x21');
writefln("Have a good day%c",'\x21');
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
Hello World!
Have a good day!
文字列リテラル
文字列リテラルは二重引用符で囲みます。文字列には、文字リテラルに類似した文字(プレーン文字、エスケープシーケンス、ユニバーサル文字)が含まれます。
文字列リテラルを使用して長い行を複数の行に分割し、空白を使用してそれらを区切ることができます。
文字列リテラルの例を次に示します-
import std.stdio;
int main(string[] args) {
writeln(q"MY_DELIMITER
Hello World
Have a good day
MY_DELIMITER");
writefln("Have a good day%c",'\x21');
auto str = q{int value = 20; ++value;};
writeln(str);
}
上記の例では、q "MY_DELIMITERMY_DELIMITER"を使用して複数行の文字を表すことができます。また、q {}がD言語ステートメント自体を表すこともわかります。