在D編程語(yǔ)言,數(shù)據(jù)類(lèi)型是指用于不同類(lèi)型的聲明變量或函數(shù)的全面系統(tǒng)。一個(gè)變量的類(lèi)型決定了空間占用的存儲(chǔ),以及如何存儲(chǔ)的比特模式的解釋。
D中的類(lèi)型可分類(lèi)如下:
| S.N. | 類(lèi)型和說(shuō)明 |
|---|---|
| 1 |
基本類(lèi)型: 此算術(shù)類(lèi)型并包含三種類(lèi)型:(一)整數(shù)類(lèi)型,(B)浮點(diǎn)類(lèi)型(三)字符類(lèi)型 |
| 2 |
枚舉類(lèi)型: 此算術(shù)類(lèi)型和它們用于定義可以只在整個(gè)節(jié)目被分配若干離散的整數(shù)值的變量。 |
| 3 |
void類(lèi)型: 此類(lèi)型說(shuō)明符無(wú)效表示沒(méi)有值可用。 |
| 4 |
派生類(lèi)型: 它們包括(一)指針類(lèi)型,(B)數(shù)組類(lèi)型,(三)結(jié)構(gòu)類(lèi)型,(四)聯(lián)合的類(lèi)型及(e)函數(shù)類(lèi)型。 |
數(shù)組類(lèi)型和結(jié)構(gòu)類(lèi)型統(tǒng)稱(chēng)為聚合類(lèi)型。一個(gè)函數(shù)的類(lèi)型指定函數(shù)的返回值的類(lèi)型。我們會(huì)看到基本類(lèi)型在下面的部分,而其他類(lèi)型將包括在下一章節(jié)。
下表提供了有關(guān)其存儲(chǔ)大小和值范圍標(biāo)準(zhǔn)的整數(shù)類(lèi)型的詳細(xì)信息:
| 類(lèi)型 | 存儲(chǔ)大小 | 值范圍 |
|---|---|---|
| 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 |
為了得到一個(gè)類(lèi)型或一個(gè)變量的確切大小,可以使用 sizeof 運(yùn)算符。表達(dá)式類(lèi)型(的sizeof),得到以字節(jié)為單位的對(duì)象或類(lèi)型的存儲(chǔ)大小。下面是一個(gè)示例得到任何機(jī)器上int型的大?。?/p>
import std.stdio; int main() { writeln("Length in bytes: ", ulong.sizeof); return 0; }
當(dāng)編譯并執(zhí)行上面的程序,它會(huì)產(chǎn)生以下結(jié)果:
Length in bytes: 8
下表提供了有關(guān)使用存儲(chǔ)大小和值范圍標(biāo)準(zhǔn)浮點(diǎn)數(shù)類(lèi)型及其用途的詳細(xì)信息
| 類(lèi)型 | 存儲(chǔ)大小 | 值范圍 | 目的 |
|---|---|---|---|
| float | 4 bytes | 1.17549e-38 to 3.40282e+38 | 6 位小數(shù) |
| double | 8 bytes | 2.22507e-308 to 1.79769e+308 | 15 位小數(shù) |
| real | 10 bytes | 3.3621e-4932 to 1.18973e+4932 | 硬件支持無(wú)論是最大浮點(diǎn)型或雙;較大者為準(zhǔn) |
| ifloat | 4 bytes | 1.17549e-38i to 3.40282e+38i | 浮虛值類(lèi)型 |
| idouble | 8 bytes | 2.22507e-308i to 1.79769e+308i | double虛值類(lèi)型 |
| ireal | 10 bytes | 3.3621e-4932 to 1.18973e+4932 | 實(shí)虛值類(lèi)型 |
| cfloat | 8 bytes | 1.17549e-38+1.17549e-38i to 3.40282e+38+3.40282e+38i | 由兩個(gè)浮點(diǎn)數(shù)復(fù)數(shù)類(lèi)型 |
| cdouble | 16 bytes | 2.22507e-308+2.22507e-308i to 1.79769e+308+1.79769e+308i | 由兩個(gè)雙復(fù)數(shù)類(lèi)型 |
| creal | 20 bytes | 3.3621e-4932+3.3621e-4932i to 1.18973e+4932+1.18973e+4932i | 由兩個(gè)實(shí)數(shù),復(fù)數(shù)類(lèi)型 |
下面的例子將打印所采用的是一個(gè)float類(lèi)型及其范圍值的存儲(chǔ)空間:
import std.stdio; int main() { writeln("Length in bytes: ", float.sizeof); return 0; }
當(dāng)編譯并執(zhí)行上述程序,它產(chǎn)生在Linux下面的結(jié)果:
Storage size for float : 4
下表提供了有關(guān)與存儲(chǔ)大小,其目的標(biāo)準(zhǔn)字符類(lèi)型的詳細(xì)信息。
| 類(lèi)型 | 存儲(chǔ)大小 | 目的 |
|---|---|---|
| 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 |
下面的例子將打印用一個(gè)char類(lèi)型的存儲(chǔ)空間。
import std.stdio; int main() { writeln("Length in bytes: ", char.sizeof); return 0; }
當(dāng)編譯并執(zhí)行上面的程序,它會(huì)產(chǎn)生以下結(jié)果:
Storage size for float : 1
void類(lèi)型指定任何值可用。這是用在兩種情況:
| S.N. | 類(lèi)型及描述 |
|---|---|
| 1 |
函數(shù)返回 void 在D語(yǔ)言中的各種函數(shù)沒(méi)有返回值,也可以說(shuō)他們返回void。沒(méi)有返回值的函數(shù)的返回類(lèi)型為void。例如, void exit (int status); |
| 2 |
函數(shù)參數(shù)為 void 有D中的各種功能不接受任何參數(shù)。不帶參數(shù)的函數(shù)可以接受一個(gè)空白。例如, int rand(void); |
void類(lèi)型在這一點(diǎn)上可能不被理解,所以讓我們繼續(xù),我們將在后面的章節(jié)這些概念。