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 表示浮点数,L 说明符表示实数。

布尔文字

有两个布尔文字,它们是标准 D 关键字的一部分 −

  • true 值代表 true。

  • false 值代表 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 语言语句本身。