D 程式設計 - 字面量



程式原始碼中鍵入的型別化常量值稱為字面量

字面量可以是任何基本資料型別,可以分為整數字面量、浮點數字面量、字元、字串和布林值。

同樣,字面量就像普通的變數一樣對待,只是它們的值在定義後不能修改。

整數字面量

整數字面量可以是以下型別之一:

  • 十進位制使用正常的數字表示法,第一個數字不能為 0,因為該數字保留用於指示八進位制系統。這並不包括單獨的 0:0 是零。

  • 八進位制使用 0 作為數字的字首。

  • 二進位制使用 0b 或 0B 作為字首。

  • 十六進位制使用 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,也可以以十六進位制系統指定,如 0x91.bc。

在十進位制系統中,指數可以透過新增字元 e 或 E 以及後面的數字來表示。例如,2.3e4 表示“2.3 乘以 10 的 4 次方”。可以在指數值之前指定“+”字元,但它沒有效果。例如,2.3e4 和 2.3e + 4 是相同的。

在指數值之前新增“ - ”字元會將含義更改為“除以 10 的冪”。例如,2.3e-2 表示“2.3 除以 10 的 2 次方”。

在十六進位制系統中,值以 0x 或 0X 開頭。指數由 p 或 P 而不是 e 或 E 指定。指數不表示“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 表示 float,L 說明符表示 real。

布林字面量

有兩個布林字面量,它們是標準 D 關鍵字的一部分:

  • true 值表示真。

  • 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_DELIMITER MY_DELIMITER" 來表示多行字元。此外,您還可以看到 q{} 來表示 D 語言語句本身。

廣告

© . All rights reserved.