📜  D编程-字面量

📅  最后修改于: 2020-11-04 05:07:04             🧑  作者: Mango


在程序中作为源代码的一部分键入的常量值称为字面量

字面量可以是任何基本数据类型,并且可以分为整数,浮点数字,字符,字符串和布尔值。

同样,字面量与常规变量一样被对待,只是它们的值在定义后不能修改。

整数字面量

整数字面量可以是以下类型的a-

  • 十进制使用第一个数字的普通数字表示形式,不能为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。

  • 虚假表示假的值。

您不应认为true的值等于1,false的值等于0。

字符字面量

字符字面量用单引号引起来。

字符字面量可以是普通字符(例如“ x”),转义序列(例如“ \ t”),ASCII字符(例如“ \ x21”),Unicode字符(例如“ \ u011e”)或作为命名字符(例如’\&copy’,’\♥’,’\€’)。

D中的某些字符在其前加反斜杠时将具有特殊含义,并且用于表示换行符(\ n)或制表符(\ t)。在这里,您有一些此类转义序列代码的列表-

Escape sequence Meaning
\\ \ 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\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语言语句本身。