阅读(1824) (19)

D编程 字面量

2021-09-01 09:46:10 更新

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

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

整数字面量

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

  • 十进制使用正常数字表示形式,其中第一个数字不能为0,因为该数字保留用于表示八进制系统。
  • 八进制使用0作为数字的前缀。
  • 二进制使用0b或0B作为前缀。
  • 十六进制使用0x或0X作为前缀。

如果不使用后缀,则编译器本身会根据值的大小在int,uint,long和ulong之间进行选择。

这是整数字面量的一些示例-

212         //Legal 
215u        //Legal 
0xFeeL      //Legal 
078         //Illegal: 8 is not an octal digit 
032UU       //Illegal: cannot repeat a suffix 

以下是各种类型的整数literal的其他示例-

85         //decimal 
0213       //octal
0x4b       //hexadecimal 
30         //int 
30u        //unsigned int 
30l        //long 
30ul       //unsigned long 
0b001      //binary

浮点字面量

浮点字面量可以在1.568中的十进制系统或在0x91.bc中的十六进制中指定。

这是浮点字面量的一些示例-

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

字符字面量

字符字面量用单引号引起来,可以是普通字符(例如“ x”),转义序列(例如“t”),ASCII字符(例如“x21”),Unicode字符(例如“u011e”)或 作为命名字符(例如'&copy','♥','€'),在这里,您有一些此类转义序列代码的列表-

转义序列含义
''
""
??
a警报或响铃
b退格键
f换页
n换行
r回车
t"水平"标签
v"垂直"标签

以下示例显示了几个转义序列字符-

import std.stdio;
  
int main(string[] args) { 
   writefln("HellotWorld%cn",'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语言语句本身。