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;
廣告