D 为整数和浮点常量提供了基础数据类型。D 程序中只可以对整数执行运算。浮点常量可用于初始化数据结构,但在 D 中不允许执行浮点运算。D 提供了 32 位和 64 位数据模型供编写程序时使用。执行程序时使用的数据模型是与活动操作系统内核关联的本机数据模型。可以使用 isainfo -b 确定系统的本机数据模型。
下表显示了两种数据模型中每一种的整数类型的名称及其大小。整数始终按系统的本机字节编码顺序以二的补码形式表示。
表 2–2 D 整数数据类型
类型名称 |
32 位大小 |
64 位大小 |
---|---|---|
char |
1 字节 |
1 字节 |
short |
2 字节 |
2 字节 |
int |
4 字节 |
4 字节 |
long |
4 字节 |
8 字节 |
long long |
8 字节 |
8 字节 |
整数类型可以带有 signed 或 unsigned 限定符的前缀。如果不存在任何符号限定符,则会将该类型假定为带符号。D 编译器还提供了下表中列出的类型别名:
表 2–3 D 整数类型别名
类型名称 |
说明 |
---|---|
int8_t |
1 字节带符号整数 |
int16_t |
2 字节带符号整数 |
int32_t |
4 字节带符号整数 |
int64_t |
8 字节带符号整数 |
intptr_t |
大小等于指针的带符号整数 |
uint8_t |
1 字节无符号整数 |
uint16_t |
2 字节无符号整数 |
uint32_t |
4 字节无符号整数 |
uint64_t |
8 字节无符号整数 |
uintptr_t |
大小等于指针的无符号整数 |
这些类型别名等效于使用上一个表中的对应基本类型的名称,并相应地为每一种数据模型进行了定义。例如,类型名称 uint8_t 是类型 unsigned char 的别名。有关如何定义自己的类型别名以供在 D 程序中使用的信息,请参见第 8 章。
D 提供了用于与 ANSI-C 声明和类型保持兼容性的浮点类型。D 中不支持浮点运算符,但可以使用 printf() 函数跟踪浮点数据对象并设置其格式。可以使用下表中列出的浮点类型:
表 2–4 D 浮点数据类型
类型名称 |
32 位大小 |
64 位大小 |
---|---|---|
float |
4 字节 |
4 字节 |
double |
8 字节 |
8 字节 |
long double |
16 字节 |
16 字节 |
D 还提供了特殊类型 string 用于表示 ASCII 字符串。第 6 章中将更详细地讨论字符串。