- D 程式設計基礎
- D 程式設計 - 首頁
- D 程式設計 - 概述
- D 程式設計 - 環境
- D 程式設計 - 基本語法
- D 程式設計 - 變數
- D 程式設計 - 資料型別
- D 程式設計 - 列舉
- D 程式設計 - 字面量
- D 程式設計 - 運算子
- D 程式設計 - 迴圈
- D 程式設計 - 條件語句
- D 程式設計 - 函式
- D 程式設計 - 字元
- D 程式設計 - 字串
- D 程式設計 - 陣列
- D 程式設計 - 關聯陣列
- D 程式設計 - 指標
- D 程式設計 - 元組
- D 程式設計 - 結構體
- D 程式設計 - 聯合體
- D 程式設計 - 範圍
- D 程式設計 - 別名
- D 程式設計 - 混入
- D 程式設計 - 模組
- D 程式設計 - 模板
- D 程式設計 - 不可變
- D 程式設計 - 檔案 I/O
- D 程式設計 - 併發
- D 程式設計 - 異常處理
- D 程式設計 - 合約
- D - 條件編譯
- D 程式設計 - 面向物件
- D 程式設計 - 類與物件
- D 程式設計 - 繼承
- D 程式設計 - 過載
- D 程式設計 - 封裝
- D 程式設計 - 介面
- D 程式設計 - 抽象類
- D 程式設計 - 有用資源
- D 程式設計 - 快速指南
- D 程式設計 - 有用資源
- D 程式設計 - 討論
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 語言語句本身。