Skip to content

常量表达式


常量项定义了一个可以在编译时求值的表达式。

前言:

常量表达式是只包含常量(这意味着在求值时不包含任何变量)以及某些允许的运算符/函数,并可能包含括号以覆盖运算符优先级顺序的表达式。

常量表达式可以在编译期间而非运行时求值,并可以用于任何可以使用常量的地方。

常量表达式主要需要用于:

  • 作为预处理器指令和内置定义宏的参数,

  • 作为 Enum/Type 结构和全局/静态变量的初始化器,

  • 作为 Data 语句的数据常量。

常量表达式中允许的运算符/函数列表

fbc 不是脚本语言,前端没有完整功能的宏处理器。

常量折叠是 fbc 中的一种优化,它获取常量表达式,在编译时对常量表达式求值,并产生单一的常量结果。

要使常量折叠起作用,必须编写运算符/函数的编译时实现。

只有以下带有常量参数的运算符/函数可用于构成常量表达式:

Bit, BitReset, BitSet, HiByte, HiWord, LoByte, LoWord
+, -, *, /, \, ^, Mod, Shl, Shr
=, <>, `<=, >`=, , >
And, Eqv, Imp, Or, Not, Xor
Abs, Acos, Asin, Atan2, Atn, Cos, Exp, Fix, Frac, Int, Log, Sgn, Sin, Sqr, Tan
Asc, Chr, CVD, CVI, CVL, CVLongInt, CVS, CVShort, Len, SizeOf
Cast, CBool, CByte, CDbl, CInt, CLng, CLngInt, CShort, CSign, CSng, CUByte, CUInt, CULng, CULngInt, CUnsg, CUShort
more obviously all predefined symbols

使用常量表达式的基本示例

说明三种不同用例的示例:

start GeSHi

vb
#define pi 4 * Atn(1)

Dim Shared As Double d = Sqr(2)

Type pt
    Dim As Integer x = 300 * Cos(pi / 6)
    Dim As Integer y = 300 * Sin(pi / 6)
End Type

Dim As pt p

Print pi        ''  3.14159...
Print d         ''  1.41421...
Print p.x, p.y  ''  260           150

Sleep

end GeSHi

参见

返回 目录

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