可以采用十进制 (12345)、八进制 (012345) 或十六进制 (0x12345) 表示整型常数。八进制(以 8 为基数)常量必须使用前导零作为前缀。十六进制(以 16 为基数)常量必须使用 0x 或 0X 作为前缀。在能够表示值的 int、long 和 long long 中,会为整型常数指定最小类型。如果值为负数,则将使用该类型的带符号版本。如果值为正数,并且太大以致不适合用带符号的类型表示,则将使用不带符号的类型表示。您可以将以下后缀之一应用于任何整型常数,以显式指定整型常数的 D 类型:
u 或 U |
编译器选择的类型的unsigned 版本 |
l 或 L |
long |
ul 或 UL |
unsigned long |
ll 或 LL |
long long |
ull 或 ULL |
unsigned long long |
浮点常量始终采用十进制表示,必须包含小数点 (12.345) 或指数 (123e45),或者同时包含二者 (123.34e-5)。缺省情况下,对浮点常量指定的类型为 double。您可以将以下后缀之一应用于任何浮点常量,以显式指定浮点常量的 D 类型:
f 或 F |
float |
l 或 L |
long double |
字符常量表示为单个字符或使用一对单引号 ('a') 引起来的转义序列。对字符常量指定的类型为 int,字符常量等效于值由 ASCII 字符集中该字符的值确定的整型常数。有关字符及其值的列表,可以参阅 ascii(5)。也可以在字符常量中使用下表所示的任何特殊转义序列。D 支持的转义序列与 ANSI-C 中相同。
表 2–5 D 字符转义序列
\a |
警报 |
\\ |
反斜杠 |
\b |
backspace 键 |
\? |
问号 |
\f |
换页 |
\' |
单引号 |
\n |
新行 |
\” |
双引号 |
\r |
回车 |
\0oo |
八进制值 0oo |
\t |
水平制表符 |
\xhh |
十六进制值 0xhh |
\v |
垂直制表符 |
\0 |
空字符 |
可以在单引号中包括多个字符说明符,以创建根据相应的字符说明符初始化各个字节的整数。将从左向右读取字符常量中的字节,并按与操作环境的本机字节存储顺序对应的顺序将各个字节分配到产生的整数。单个字符常量中最多可以包括八个字符说明符。
任何长度的字符串常量都可以通过引在一对双引号中 ("hello") 来构成。字符串常量可能不含字面值换行符。要创建包含换行符的字符串,请使用 \n 转义序列来代替字面换行符。字符串常量可以包含上面所示字符常量的任何特殊字符转义序列。与 ANSI-C 类似,字符串表示为由空字符 (\0) 结尾的字符数组,该空字符隐式添加到所声明的每个字符串常量中。对字符串常量指定了特殊的 D 类型 string。D 编译器提供了一组特殊功能,用于比较和跟踪被声明为字符串的字符数组,如第 6 章中所述。