Literals
 
非变量编译时字符串和数值。

文字是直接在源代码中指定的数字或字符串。可以通过将它们赋值给变量或常量,将它们传递给过程或在表达式中使用它们来使用字面值。

数字文字有两种形式 - 整数和浮点数。

整数文字


十进制
小数位数(0 1 2 3 4 5 6 7 8 9)。
Note: to get negative values, a "-" sign (操作符 - (Negate)) can be placed before a numeric literal

Dim x As Integer = 123456
Dim b As Byte = -128


十六进制
&H”,后跟十六进制数字(0 1 2 3 4 5 6 7 8 9 A B C D E F)。

Dim x As Integer = &h1E240
Dim b As Byte = &H80

{八路}999796002
&O”(O如“八进制”),后跟八进制数字(0 1 2 3 4 5 6 7

Dim x As Integer = &O361100
Dim b As Byte = &O200

{999796001}Binary{999796002}
&B”,后跟二进制数字(0 1

Dim x As Integer = &B11110001001000000
Dim b As Byte = &B10000000


整数大小后缀

如果未提供整数文字后缀,则会自动计算保存文字所需的数字字段大小。指定大小后缀保证编译器将一个数字视为一个特定的整数大小。

整数文字以:
  • %”被认为是32/64(取决于平台)位整数。(Integer)
  • L”,“&”被视为有符号的32位长整数。(Long)
  • U”被视为无符号32/64(取决于平台)位整数。(UInteger)
  • UL”被视为无符号32位整数。(Ulong)
  • LL”被视为带符号的64位整数。(LongInt)
  • ULL”被视为无符号的64位整数。(ULongInt)

前缀,后缀和十六进制字母数字都不区分大小写。

Dim a As Long = 123L
Dim b As UInteger = &h1234u
Dim c As LongInt = 76543LL
Dim d As ULongInt = &b1010101ULL


浮点文字

浮点数以十进制数表示,可以是正数或负数,具有小数部分,可选地指数。浮点文字的格式如下:

number[.[fraction]][((D|E) [+|-] exponent)|(D|E)|][suffix]
or
.fraction[((D|E) [+|-] exponent)|(D|E)|][suffix]

默认情况下,没有指数或后缀的浮点数被视为双精度浮点值,除了-lang qb 方言之外,其中7位或更少的数字被认为是单精度。
Dim a As Double = 123.456
Dim b As Double = -123.0


放在数字/分数部分之后的字母“D”或“E”允许给出一个指数。指数可以用正号或负号(“+”)或减号(“-”)指定。没有符号的指数是正数。
在信之后不需要指数,所以该字母只能用于指定类型。“D”指定双精度浮点数。“E”使用默认精度指定浮点数。当字母与后缀结合使用时(见下文),后缀表示的类型会覆盖字母指定的类型。

Dim a As Double = -123.0d
Dim b As Double = -123e
Dim c As Double = 743.1e+13
Dim d As Double = 743.1D-13
Dim e As Double = 743.1E13
Dim f As Single = 743D! 


数字上的“!”或“F”后缀指定单个精度(总共32位)浮点值。后缀“#”指定双精度浮点数。
请注意,字母后缀和指数说明符都不区分大小写。

Dim a As Single = 3.1!
Dim b As Single = -123.456e-7f
Dim c As Double = 0#
Dim d As Double = 3.141592653589e3#


字符串文字

字符串文字是包含在两个双引号之间的一系列字符。字符序列已转义或未转义。

双引号可以在字符串文字中使用两个双引号在一起指定。
Print "Hello World!"
Print "That's right!"
Print "See the ""word"" contained in double quotes."


字符串字面值可以包含转义序列,如果字符串文字以! Operator(转义字符串文字)为前缀。有关接受的转义序列的列表,请参阅转义序列.
Print !"Hello\nWorld!"


默认情况下,字符串字面值不会被转义,除非源中使用Option Escape,在这种情况下,所有字符串字面值都按默认值转义。

$ Operator(非转义字符串文字)前缀时,字符串可能会被显式指定为非转义。
Print $"C:\temp"


除了具有Unicode转义序列的ASCII文件(\u),FreeBASIC可以解析UTF-8,UTF-16LE,UTF-16BE,UTF-32LE和UTF-32BE源文件,直接在字符串文字中使用unicode字符。

参考