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 类型,因此让我们继续,我们将在后续章节中介绍这些概念。

广告