- D 编程基础
- D 编程 - 首页
- D 编程 - 概述
- D 编程 - 环境
- D 编程 - 基本语法
- D 编程 - 变量
- D 编程 - 数据类型
- D 编程 - 枚举
- D 编程 - 字面量
- D 编程 - 运算符
- D 编程 - 循环
- D 编程 - 条件语句
- D 编程 - 函数
- D 编程 - 字符
- D 编程 - 字符串
- D 编程 - 数组
- D 编程 - 关联数组
- D 编程 - 指针
- D 编程 - 元组
- D 编程 - 结构体
- D 编程 - 联合体
- D 编程 - 范围
- D 编程 - 别名
- D 编程 - 混入
- D 编程 - 模块
- D 编程 - 模板
- D 编程 - 不可变
- D 编程 - 文件 I/O
- D 编程 - 并发
- D 编程 - 异常处理
- D 编程 - 合约
- D - 条件编译
- D 编程 - 面向对象
- D 编程 - 类与对象
- D 编程 - 继承
- D 编程 - 重载
- D 编程 - 封装
- D 编程 - 接口
- D 编程 - 抽象类
- D 编程 - 有用资源
- D 编程 - 快速指南
- D 编程 - 有用资源
- D 编程 - 讨论
D 编程 - 字面量
程序源代码中键入的类型化常量值称为字面量。
字面量可以是任何基本数据类型,可以分为整数字面量、浮点数字面量、字符、字符串和布尔值。
同样,字面量就像普通的变量一样对待,只是它们的值在定义后不能修改。
整数字面量
整数字面量可以是以下类型之一:
十进制使用正常的数字表示法,第一个数字不能为 0,因为该数字保留用于指示八进制系统。这并不包括单独的 0:0 是零。
八进制使用 0 作为数字的前缀。
二进制使用 0b 或 0B 作为前缀。
十六进制使用 0x 或 0X 作为前缀。
整数字面量还可以带有后缀,该后缀是 U 和 L 的组合,分别表示无符号和长整型。后缀可以是大写或小写,并且可以按任意顺序排列。
当您不使用后缀时,编译器会根据值的范围在 int、uint、long 和 ulong 之间进行选择。
以下是一些整数字面量的示例:
212 // Legal 215u // Legal 0xFeeL // Legal 078 // Illegal: 8 is not an octal digit 032UU // Illegal: cannot repeat a suffix
以下是各种类型整数字面量的其他示例:
85 // decimal 0213 // octal 0x4b // hexadecimal 30 // int 30u // unsigned int 30l // long 30ul // unsigned long 0b001 // binary
浮点数字面量
浮点数字面量可以以十进制系统指定,如 1.568,也可以以十六进制系统指定,如 0x91.bc。
在十进制系统中,指数可以通过添加字符 e 或 E 以及后面的数字来表示。例如,2.3e4 表示“2.3 乘以 10 的 4 次方”。可以在指数值之前指定“+”字符,但它没有效果。例如,2.3e4 和 2.3e + 4 是相同的。
在指数值之前添加“ - ”字符会将含义更改为“除以 10 的幂”。例如,2.3e-2 表示“2.3 除以 10 的 2 次方”。
在十六进制系统中,值以 0x 或 0X 开头。指数由 p 或 P 而不是 e 或 E 指定。指数不表示“10 的幂”,而是“2 的幂”。例如,0xabc.defP4 中的 P4 表示“abc.de 乘以 2 的 4 次方”。
以下是一些浮点数字面量的示例:
3.14159 // Legal 314159E-5L // Legal 510E // Illegal: incomplete exponent 210f // Illegal: no decimal or exponent .e55 // Illegal: missing integer or fraction 0xabc.defP4 // Legal Hexa decimal with exponent 0xabc.defe4 // Legal Hexa decimal without exponent.
默认情况下,浮点数字面量的类型为 double。f 和 F 表示 float,L 说明符表示 real。
布尔字面量
有两个布尔字面量,它们是标准 D 关键字的一部分:
true 值表示真。
false 值表示假。
您不应该认为 true 的值为 1,false 的值为 0。
字符字面量
字符字面量用单引号括起来。
字符字面量可以是普通字符(例如,'x')、转义序列(例如,'\t')、ASCII 字符(例如,'\x21')、Unicode 字符(例如,'\u011e')或命名字符(例如 '\©','\♥', '\€')。
在 D 中,某些字符在前面有反斜杠时会具有特殊含义,用于表示换行符(\n)或制表符(\t)。这里,您有一个此类转义序列代码的列表:
转义序列 | 含义 |
---|---|
\\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ? 字符 |
\a | 警报或铃声 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
以下示例显示了一些转义序列字符:
import std.stdio; int main(string[] args) { writefln("Hello\tWorld%c\n",'\x21'); writefln("Have a good day%c",'\x21'); return 0; }
当以上代码编译并执行时,会产生以下结果:
Hello World! Have a good day!
字符串字面量
字符串字面量用双引号括起来。字符串包含与字符字面量类似的字符:普通字符、转义序列和通用字符。
您可以使用字符串字面量将长行分成多行,并使用空格分隔它们。
以下是一些字符串字面量的示例:
import std.stdio; int main(string[] args) { writeln(q"MY_DELIMITER Hello World Have a good day MY_DELIMITER"); writefln("Have a good day%c",'\x21'); auto str = q{int value = 20; ++value;}; writeln(str); }
在上面的示例中,您可以找到使用 q"MY_DELIMITER MY_DELIMITER" 来表示多行字符。此外,您还可以看到 q{} 来表示 D 语言语句本身。