Skip to content

字面量


非变量的编译时字符串、数值和布尔值。

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

数值字面量有两种形式:整数和浮点数。

整数字面量

十进制

十进制数字(0 1 2 3 4 5 6 7 8 9)。

注意:要获得负值,可以在数值字面量前加上 "-" 符号(Operator - (Negate)

start GeSHi

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

end GeSHi

十六进制

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

start GeSHi

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

end GeSHi

八进制

"&O"(或 "&"),后跟八进制数字(0 1 2 3 4 5 6 7

start GeSHi

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

end GeSHi

二进制

"&B",后跟二进制数字(0 1

start GeSHi

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

end GeSHi

整数大小后缀

如果未指定整数字面量后缀,则会自动计算保存该字面量所需的字段大小。指定大小后缀可确保编译器将数字视为特定的整数大小。

以下结尾的整数字面量:

  • "%",被视为有符号 32/64(取决于平台)位整数。(Integer
  • "L"、"&",被视为有符号 32 位长整数。(Long
  • "U",被视为无符号 32/64(取决于平台)位整数。(Uinteger
  • "UL",被视为无符号 32 位整数。(Ulong
  • "LL",被视为有符号 64 位整数。(Longint
  • "ULL",被视为无符号 64 位整数。(Ulongint

前缀数值字面量的负号(-)和正号(+)并不属于数值字面量的一部分。形如 "-1L" 的表达式会被解析为将取反运算符应用于正字面量("1L")所表示的值,这可能涉及隐式类型转换。当显式的 "+" 号出现在整数字面量之前时,行为相同。

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

start GeSHi

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

end GeSHi

浮点字面量

浮点数以十进制数字表示,可为正数或负数,包含小数部分,以及可选的指数部分。浮点字面量的格式如下(不含空格或括号):

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

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

默认情况下,没有指数或后缀的浮点数被视为双精度浮点值,但在 -lang qb 方言中,7 位或更少位数的数字被视为单精度。

start GeSHi

vb
Dim a As Double = 123.456
Dim b As Double = -123.0

end GeSHi

在数字/小数部分之后放置字母 "D" 或 "E",可以为数字指定指数。指数可以用加号("+")或减号("-")指定为正数或负数。没有符号的指数为正数。

字母后不需要指数值(甚至符号后也不需要),因此字母可以单独用于指定类型。"D" 指定双精度浮点数。"E" 指定使用默认精度的浮点数。当字母与后缀结合使用时(见下文),后缀所表示的类型优先于字母所指定的类型。

start GeSHi

vb
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!

end GeSHi

数字上的 "!" 或 "F" 后缀指定单精度(共 32 位)浮点值。"#" 或 "D" 后缀指定双精度浮点数。

注意,字母后缀和指数说明符均不区分大小写。

start GeSHi

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

end GeSHi

字符串字面量

字符串字面量是包含在两个双引号之间的字符序列。字符序列可以是转义或非转义的。

双引号可以通过在字符串字面量中连续使用两个双引号来指定。

start GeSHi

vb
Print "Hello World!"
Print "That's right!"
Print "See the ""word"" contained in double quotes."

end GeSHi

如果字符串字面量以 ! 运算符(转义字符串字面量)为前缀,则字符串字面量可以包含转义序列。接受的转义序列列表请参见转义序列

start GeSHi

vb
Print !"Hello\nWorld!"

end GeSHi

默认情况下,字符串字面量是非转义的,除非在源码中使用了 Option Escape,此后所有字符串字面量默认均为转义的。

可以通过 $ 运算符(非转义字符串字面量)前缀将字符串显式指定为非转义。

start GeSHi

vb
Print $"C:\temp"

end GeSHi

除了带有 Unicode 转义序列(\u)的 ASCII 文件外,FreeBASIC 还可以解析 UTF-8、UTF-16LE、UTF-16BE、UTF-32LE 和 UTF-32BE 源文件(只要它们以字节顺序标记(BOM)保存),从而允许在字符串字面量中直接使用 Unicode 字符。

注意:最可靠的跨平台代码是通过使用不带 BOM 的 ASCII/UTF-8 字符编码获得的。

ASCII 文件中的字符串字面量被视为 ZString,而 Unicode 文件中的字符串字面量被视为 WString(无论字符串字面量的值如何)。

布尔字面量

布尔类型有两个值,分别由字面量 TrueFalse 表示。

start GeSHi

vb
Dim a As Boolean = False
Dim b As Boolean = True

end GeSHi

另请参阅

  • Typeof
  • #define
  • Const
  • 标准数据类型
  • 变量类型概述、限制和后缀表

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系