D-programming-literals

提供:Dev Guides
移動先:案内検索

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 \ {}を見ることができます。