D 语言 - 数据类型

在 D 编程语言中,数据类型是指用于声明不同类型的变量或函数的广泛系统。 变量的类型决定了它在存储中占用多少空间以及如何解释存储的位模式。

D中的类型可以分类如下 −

序号 类型和描述
1

基本类型

它们是算术类型,由三种类型组成:(a) 整数、(b) 浮点数和 (c) 字符。

2

枚举类型

它们又是算术类型。 它们用于定义在整个程序中只能分配某些离散整数值的变量。

3

类型 void

类型说明符void表示没有可用的值。

4

派生类型

它们包括 (a) 指针类型、(b) 数组类型、(c) 结构体类型、(d) 联合类型和 (e) 函数类型。

数组类型和结构类型统称为聚合类型。 函数的类型指定函数的返回值的类型。 我们将在下一节中看到基本类型,而其他类型将在接下来的章节中介绍。

整数类型

下表列出了标准整数类型及其存储大小和值范围 −

类型 存储大小 值范围
bool 1 byte false 或 true
byte 1 byte -128 到 127
ubyte 1 byte 0 到 255
int 4 bytes -2,147,483,648 到 2,147,483,647
uint 4 bytes 0 到 4,294,967,295
short 2 bytes -32,768 到 32,767
ushort 2 bytes 0 到 65,535
long 8 bytes -9223372036854775808 to 9223372036854775807
ulong 8 bytes 0 to 18446744073709551615

要获取类型或变量的确切大小,可以使用 sizeof 运算符。 表达式 type.(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 至 3.40282e+38 小数点后 6 位
double 8 bytes 2.22507e-308 to 1.79769e+308 小数点后 15 位
real 10 bytes 3.3621e-4932 至 1.18973e+4932 硬件支持的最大浮点类型,或者 double; 以较大者为准
ifloat 4 bytes 1.17549e-38i 至 3.40282e+38i float 虚值类型
idouble 8 bytes 2.22507e-308i 至 1.79769e+308i double 的虚值类型
ireal 10 bytes 3.3621e-4932 至 1.18973e+4932 real 的虚值类型
cfloat 8 bytes 1.17549e-38+1.17549e-38i 至 3.40282e+38+3.40282e+38i 由两个浮点数组成的复数类型
cdouble 16 bytes 2.22507e-308+2.22507e-308i 至 1.79769e+308+1.79769e+308i 由两个双精度数组成的复数类型
creal 20 bytes 3.3621e-4932+3.3621e-4932i 至 1.18973e+4932+1.18973e+4932i 由两个实数组成的复数类型

下面的示例打印 float 类型占用的存储空间及其范围值 −

import std.stdio;

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

   return 0; 
}

当您编译并执行上述程序时,它会在 Linux 上产生以下结果 −

Length in bytes: 4

字符类型

下表列出了标准字符类型及其存储大小及其用途。

类型 存储大小 用途
char 1 byte UTF-8 代码单元
wchar 2 bytes UTF-16 代码单元
dchar 4 bytes UTF-32 代码单元和 Unicode 代码点

以下示例打印 char 类型占用的存储空间。

import std.stdio;

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

当你编译并执行上面的程序时,它会产生以下结果 −

Length in bytes: 1

void 类型

void 类型指定没有可用值。 它用于两种情况 −

序号 类型和描述
1

Function returns as void

D 中有多种不返回值的函数,或者您可以说它们返回 void。 无返回值的函数的返回类型为 void。 例如, void exit (int status);

2

Function arguments as void

D 中有多种不接受任何参数的函数。 没有参数的函数可以接受 void。 例如,int rand(void);

此时您可能不理解 void 类型,所以让我们继续,我们将在接下来的章节中介绍这些概念。