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言語ステートメント自体を表すこともわかります。