D语言常值 - D语言教程

被输入了该程序的源代码的部分恒定值称为 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
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t 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语言语句本身。