D語言資料型別


在D程式設計語言,資料型別是指用於不同型別的宣告變數或函式的全面系統。一個變數的型別決定了空間佔用的儲存,以及如何儲存的位元模式的解釋。

D中的型別可分類如下:

S.N. 型別和說明
1 基本型別:
此算術型別並包含三種型別:(一)整數型別,(B)浮點型別(三)字元型別
2 列舉型別:
此算術型別和它們用於定義可以只在整個節目被分配若干離散的整數值的變數。
3 void型別:
此型別說明符無效表示沒有值可用。
4 派生型別:
它們包括(一)指標型別,(B)陣列型別,(三)結構型別,(四)聯合的型別及(e)函式型別。

陣列型別和結構型別統稱為聚合型別。一個函式的型別指定函式的返回值的型別。我們會看到基本型別在下面的部分,而其他型別將包括在下一章節。

整數型別

下表提供了有關其儲存大小和值範圍標準的整數型別的詳細資訊:

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

為了得到一個型別或一個變數的確切大小,可以使用 sizeof 運算子。表示式型別(的sizeof),得到以位元組為單位的物件或型別的儲存大小。下面是一個範例得到任何機器上int型的大小:

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

當編譯並執行上面的程式,它會產生以下結果:

Length in bytes: 8

浮點型別

下表提供了有關使用儲存大小和值範圍標準浮點數型別及其用途的詳細資訊

型別 儲存大小 值範圍 目的
float 4 bytes 1.17549e-38 to 3.40282e+38 6 位小數
double 8 bytes 2.22507e-308 to 1.79769e+308 15 位小數
real 10 bytes 3.3621e-4932 to 1.18973e+4932 硬體支援無論是最大浮點型或雙;較大者為準
ifloat 4 bytes 1.17549e-38i to 3.40282e+38i 浮虛值型別
idouble 8 bytes 2.22507e-308i to 1.79769e+308i double虛值型別
ireal 10 bytes 3.3621e-4932 to 1.18973e+4932 實虛值型別
cfloat 8 bytes 1.17549e-38+1.17549e-38i to 3.40282e+38+3.40282e+38i 由兩個浮點數複數型別
cdouble 16 bytes 2.22507e-308+2.22507e-308i to 1.79769e+308+1.79769e+308i 由兩個雙複數型別
creal 20 bytes 3.3621e-4932+3.3621e-4932i to 1.18973e+4932+1.18973e+4932i 由兩個實數,複數型別

下面的例子將列印所採用的是一個float型別及其範圍值的儲存空間:

import std.stdio;
int main()
{
   writeln("Length in bytes: ", float.sizeof);
   return 0;
}

當編譯並執行上述程式,它產生在Linux下面的結果:

Storage size for float : 4 

字元型別

下表提供了有關與儲存大小,其目的標準字元型別的詳細資訊。

型別 儲存大小 目的
char 1 byte UTF-8 code unit
wchar 2 bytes UTF-16 code unit
dchar 4 bytes UTF-32 code unit and Unicode code yiibai

下面的例子將列印用一個char型別的儲存空間。

import std.stdio;

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

當編譯並執行上面的程式,它會產生以下結果:

Storage size for float : 1 

void型別

void型別指定任何值可用。這是用在兩種情況:

S.N. 型別及描述
1 函式返回 void
在D語言中的各種函式沒有返回值,也可以說他們返回void。沒有返回值的函式的返回型別為void。例如, void exit (int status);
2 函式引數為 void
有D中的各種功能不接受任何引數。不帶引數的函式可以接受一個空白。例如, int rand(void);

void型別在這一點上可能不被理解,所以讓我們繼續,我們將在後面的章節這些概念。