D 程式設計 - 資料型別



在 D 程式語言中,資料型別指的是一個廣泛的系統,用於宣告不同型別的變數或函式。變數的型別決定了它在儲存器中佔據多少空間以及儲存的位模式如何解釋。

D 中的型別可以分類如下:

序號 型別和描述
1

基本型別

它們是算術型別,包括三種類型:(a) 整數,(b) 浮點數,以及 (c) 字元。

2

列舉型別

它們也是算術型別。它們用於定義變數,這些變數在整個程式中只能分配某些離散的整數值。

3

void 型別

型別說明符 void 表示沒有值可用。

4

派生型別

它們包括 (a) 指標型別,(b) 陣列型別,(c) 結構體型別,(d) 聯合體型別,以及 (e) 函式型別。

陣列型別和結構體型別統稱為聚合型別。函式的型別指定了函式返回值的型別。我們將在下一節中看到基本型別,而其他型別將在後續章節中介紹。

整數型別

下表列出了標準整數型別及其儲存大小和值範圍:

型別 儲存大小 值範圍
bool 1 位元組 false 或 true
byte 1 位元組 -128 到 127
ubyte 1 位元組 0 到 255
int 4 位元組 -2,147,483,648 到 2,147,483,647
uint 4 位元組 0 到 4,294,967,295
short 2 位元組 -32,768 到 32,767
ushort 2 位元組 0 到 65,535
long 8 位元組 -9223372036854775808 到 9223372036854775807
ulong 8 位元組 0 到 18446744073709551615

要獲取型別或變數的確切大小,可以使用 sizeof 運算子。表示式 type.(sizeof) 以位元組為單位給出物件或型別的儲存大小。以下示例獲取任何機器上 int 型別的尺寸:

import std.stdio; 
 
int main() { 
   writeln("Length in bytes: ", ulong.sizeof); 

   return 0; 
}

編譯並執行上述程式時,會產生以下結果:

Length in bytes: 8 

浮點數型別

下表列出了標準浮點數型別,包括儲存大小、值範圍及其用途:

型別 儲存大小 值範圍 用途
float 4 位元組 1.17549e-38 到 3.40282e+38 6 位小數
double 8 位元組 2.22507e-308 到 1.79769e+308 15 位小數
real 10 位元組 3.3621e-4932 到 1.18973e+4932 硬體支援的最大浮點數型別或 double,兩者中較大者。
ifloat 4 位元組 1.17549e-38i 到 3.40282e+38i float 的虛數型別
idouble 8 位元組 2.22507e-308i 到 1.79769e+308i double 的虛數型別
ireal 10 位元組 3.3621e-4932 到 1.18973e+4932 real 的虛數型別
cfloat 8 位元組 1.17549e-38+1.17549e-38i 到 3.40282e+38+3.40282e+38i 由兩個 float 組成的複數型別
cdouble 16 位元組 2.22507e-308+2.22507e-308i 到 1.79769e+308+1.79769e+308i 由兩個 double 組成的複數型別
creal 20 位元組 3.3621e-4932+3.3621e-4932i 到 1.18973e+4932+1.18973e+4932i 由兩個 real 組成的複數型別

以下示例列印 float 型別佔用的儲存空間及其範圍值:

import std.stdio;

int main() { 
   writeln("Length in bytes: ", float.sizeof); 

   return 0; 
}

編譯並執行上述程式時,在 Linux 上會產生以下結果:

Length in bytes: 4

字元型別

下表列出了標準字元型別及其儲存大小和用途。

型別 儲存大小 用途
char 1 位元組 UTF-8 程式碼單元
wchar 2 位元組 UTF-16 程式碼單元
dchar 4 位元組 UTF-32 程式碼單元和 Unicode 程式碼點

以下示例列印 char 型別佔用的儲存空間。

import std.stdio;

int main() {
   writeln("Length in bytes: ", char.sizeof);
   
   return 0;
}

編譯並執行上述程式時,會產生以下結果:

Length in bytes: 1

void 型別

void 型別指定沒有值可用。它用於兩種情況:

序號 型別和描述
1

函式返回 void

D 中有許多函式不返回值,或者可以認為它們返回 void。不返回值的函式的返回型別為 void。例如,void exit (int status);

2

函式引數為 void

D 中有許多函式不接受任何引數。不帶引數的函式可以接受 void。例如,int rand(void);

此時您可能無法理解 void 型別,因此讓我們繼續,我們將在後續章節中介紹這些概念。

廣告