D-programming-literals
Dプログラミング-リテラル
ソースコードの一部としてプログラムに入力される定数値は、*リテラル*と呼ばれます。
リテラルは任意の基本データ型であり、整数数値、浮動小数点数値、文字、文字列、およびブール値に分割できます。
繰り返しますが、リテラルは通常の変数と同様に扱われますが、定義後に値を変更することはできません。
整数リテラル
整数リテラルは、次のタイプのいずれかです-
- Decimal は通常の数値表現を使用します。最初の数字は8進法を示すために予約されているため、最初の数字を0にすることはできません。これには0は含まれません。
- Octal は、番号のプレフィックスとして0を使用します。
- Binary は、プレフィックスとして0bまたは0Bを使用します。
- Hexadecimal は0xまたは0Xをプレフィックスとして使用します。
整数リテラルには、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を表す true の値。
- falseを表す false の値。
trueの値が1に、falseの値が0に等しいとは考えないでください。
文字リテラル
文字リテラルは単一引用符で囲まれます。
文字リテラルは、プレーン文字(例、 'x')、エスケープシーケンス(例、 '\ t')、ASCII文字(例、 '\ x21')、Unicode文字(例、 '\ u011e')または名前のある文字として(例えば 「\&copy」、「\♥」、「\€」)。
Dには特定の文字があり、バックスラッシュが前に付いている場合は特別な意味を持ち、改行(\ n)またはタブ(\ t)のような表現に使用されます。 ここでは、そのようなエスケープシーケンスコードのいくつかのリストを持っています-
Escape sequence | Meaning |
---|---|
\\ | \ character |
\' | ' character |
\" | " character |
\? | ? character |
\a | Alert or bell |
\b | Backspace |
\f | Form feed |
\n | Newline |
\r | Carriage return |
\t | Horizontal tab |
\v | Vertical tab |
次の例は、いくつかのエスケープシーケンス文字を示しています-
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_DELIMITER MY_DELIMITER"を使用して複数行の文字を表すことができます。 また、D言語ステートメント自体を表すq \ {}を見ることができます。