被输入了该程序的源代码的部分恒定值称为 literals.
常值可以是任何基本数据类型,可以分为整数数字,浮点数字,字符,字符串和布尔值。
再次,文字将视为就像普通变量不同之处在于它们的值,不能在他们的定义后进行修改。
整数文字:
整数文字可以是如下类型:
-
十进制:使用与第一个数字是平日的定位表示不能为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的幂值”。 A +字符可能指数前值来指定,但没有效果。例如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平均浮点值,以及L说明符是指真实的。
布尔文字:
有两个布尔文字,他们是标准的D关键字的一部分:
-
真实代表true值。
-
虚假表示false值。
不应该考虑true等于1值和false等于0值。
字符文字:
字符常量单引号括起来。
字符文字可以是一个普通的字符(e.g., 'x'), 转义序列 (e.g., ' '), ASCII 字符(e.g., 'x21'), Unicode 字符(e.g., 'u011e') 或作为命名字符 (e.g. '©','♥', '€' ).
有某些字符在D中,当他们前面加一个反斜杠,他们将有特殊的含义,它们是用来表示相同的换行符( n)或制表符( t)。在这里,有一些这样的转义序列代码的列表:
转义序列 | 含意 |
---|---|
character | |
' | ' character |
" | " character |
? | ? character |
a | Alert or bell |
Backspace | |
f | Form feed |
Newline | |
Carriage return | |
Horizontal tab | |
v | Vertical tab |
下面是例子来说明几个转义序列字符:
import std.stdio; int main(string[] args) { writefln("Hello World%c ",'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语言语句本身。