
- D 程式設計基礎
- D 程式設計 - 首頁
- D 程式設計 - 概述
- D 程式設計 - 環境
- D 程式設計 - 基本語法
- D 程式設計 - 變數
- D 程式設計 - 資料型別
- D 程式設計 - 列舉
- D 程式設計 - 字面量
- D 程式設計 - 運算子
- D 程式設計 - 迴圈
- D 程式設計 - 條件語句
- D 程式設計 - 函式
- D 程式設計 - 字元
- D 程式設計 - 字串
- D 程式設計 - 陣列
- D 程式設計 - 關聯陣列
- D 程式設計 - 指標
- D 程式設計 - 元組
- D 程式設計 - 結構體
- D 程式設計 - 共用體
- D 程式設計 - 範圍
- D 程式設計 - 別名
- D 程式設計 - Mixin
- D 程式設計 - 模組
- D 程式設計 - 模板
- D 程式設計 - 不可變物件
- D 程式設計 - 檔案 I/O
- D 程式設計 - 併發
- D 程式設計 - 異常處理
- D 程式設計 - 合約
- D - 條件編譯
- D 程式設計 - 面向物件
- D 程式設計 - 類與物件
- D 程式設計 - 繼承
- D 程式設計 - 過載
- D 程式設計 - 封裝
- D 程式設計 - 介面
- D 程式設計 - 抽象類
- D 程式設計 - 有用資源
- D 程式設計 - 快速指南
- D 程式設計 - 有用資源
- D 程式設計 - 討論
D 程式設計 - 變數
變數只不過是程式可以操作的儲存區域的名稱。D 中的每個變數都有一個特定的型別,該型別決定變數記憶體的大小和佈局;可以儲存在該記憶體中的值的範圍;以及可以應用於該變數的操作集。
變數名可以由字母、數字和下劃線組成。它必須以字母或下劃線開頭。大小寫字母是不同的,因為 D 區分大小寫。根據上一章解釋的基本型別,將存在以下基本變數型別:
序號 | 型別及描述 |
---|---|
1 | char 通常是一個八位位元組(一個位元組)。這是一個整數型別。 |
2 | int 機器中最自然的整數大小。 |
3 | float 單精度浮點數。 |
4 | double 雙精度浮點數。 |
5 | void 表示型別的缺失。 |
D 程式語言還允許定義各種其他型別的變數,例如列舉、指標、陣列、結構體、共用體等,我們將在後續章節中介紹。在本節中,讓我們只學習基本變數型別。
D 中的變數定義
變數定義告訴編譯器在哪裡以及為變數建立多少空間。變數定義指定一個數據型別,幷包含該型別的一個或多個變數列表,如下所示:
type variable_list;
這裡,type 必須是有效的 D 資料型別,包括 char、wchar、int、float、double、bool 或任何使用者定義的物件等,而 variable_list 可以包含一個或多個用逗號分隔的識別符號名稱。這裡顯示了一些有效的宣告:
int i, j, k; char c, ch; float f, salary; double d;
語句 int i, j, k; 同時宣告和定義了變數 i、j 和 k;它指示編譯器建立名為 i、j 和 k 的 int 型別變數。
可以在變數宣告中初始化(賦值初始值)變數。初始化程式由等號後跟一個常量表達式組成,如下所示:
type variable_name = value;
示例
extern int d = 3, f = 5; // declaration of d and f. int d = 3, f = 5; // definition and initializing d and f. byte z = 22; // definition and initializes z. char x = 'x'; // the variable x has the value 'x'.
在 D 中宣告變數時,它始終設定為其“預設初始化程式”,可以手動訪問為 T.init,其中 T 是型別(例如 int.init)。整數型別的預設初始化程式為 0,布林值為 false,浮點數為 NaN。
D 中的變數宣告
變數宣告向編譯器保證存在一個具有給定型別和名稱的變數,以便編譯器可以進行進一步的編譯,而無需變數的完整詳細資訊。變數宣告僅在編譯時才有意義,編譯器在程式連結時需要實際的變數宣告。
示例
嘗試以下示例,其中變數已在程式開頭宣告,但在 main 函式內定義和初始化:
import std.stdio; int a = 10, b = 10; int c; float f; int main () { writeln("Value of a is : ", a); /* variable re definition: */ int a, b; int c; float f; /* Initialization */ a = 30; b = 40; writeln("Value of a is : ", a); c = a + b; writeln("Value of c is : ", c); f = 70.0/3.0; writeln("Value of f is : ", f); return 0; }
編譯並執行上述程式碼後,將產生以下結果:
Value of a is : 10 Value of a is : 30 Value of c is : 70 Value of f is : 23.3333
D 中的左值和右值
D 中有兩種表示式:
左值 - 可以作為賦值的左側或右側出現的表示式。
右值 - 可以作為賦值的右側出現,但不能作為左側出現的表示式。
變數是左值,因此可以出現在賦值的左側。數值文字是右值,因此不能賦值,也不能出現在左側。以下語句有效:
int g = 20;
但以下語句無效,會生成編譯時錯誤:
10 = 20;