在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类型在这一点上可能不被理解,所以让我们继续,我们将在后面的章节这些概念。