集合符号

youkong zaikan

前提是你 提交于 2019-11-27 01:07:18
为什么会出现LNK2005 许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻底解开关于它的种种疑惑。 大家都知道,从C/C++源程序到可执行文件要经历两个阶段:(1)编译器将源文件编译成汇编代码,然后由汇编器(assembler)翻译成机器指令(再加上其它相关信息)后输出到一个个目标文件(object file,VC的编译器编译出的目标文件默认的后缀名是.obj)中;(2)链接器(linker)将一个个的目标文件(或许还会有若干程序库)链接在一起生成一个完整的可执行文件。 编译器编译源文件时会把源文件的全局符号(global symbol)分成强(strong)和弱(weak)两类传给汇编器,而随后汇编器则将强弱信息编码并保存在目标文件的符号表中。那么何谓强弱呢?编译器认为函数与初始化了的全局变量都是强符号,而未初始化的全局变量则成了弱符号。比如有这么个源文件: extern int errorno; int buf[2] = {1,2}; int *p; int main() {

Delphi运算符总结

耗尽温柔 提交于 2019-11-26 19:22:48
分类 运算符 操作 操作数 结果类型 范例 算术运算符(加法、减法和乘法运算符的结果为参加运算的两个数据中的精度高的类型) + 加 整数,实数 整数,实数 X + Y - 减 整数,实数 整数,实数 Result - 1 * 乘 整数,实数 整数,实数 P * InterestRate / 实数除 整数,实数 实数 X / 2,不同于C中,C中5/2的结果是整数2,但是在Delphi中5/2的结果是2.5。Delphi中/运算符的结果总是实型数据 div 整数除 整数 整数 只能对两个整数进行除法运算,结果为整型数据。例如5 div 3 的值为1,而5 div 2.0是不合法的 mod 取模 整数 整数 Y mod 6, 两个操作数也都必须是整数,例如5 mod 3 的值为2 +(一元) 符号等同 整数,实数 整数,实数 +7 -(一元) 符号相反 整数,实数 整数,实数 -X 布尔运算符 not 否定 布尔型 Boolean not (C in MySet) and 与 布尔型 Boolean Done and (Total > 0) or 或 布尔型 Boolean A or B xor 异或 布尔型 Boolean A xor B 逻辑(按位)运算符 位运算符的操作数必须是整数 按位运算符通常用来把整数的某个位清0;按位异或运算符通常可以用来把整数的某些位取反

Delphi 的运算符列表

坚强是说给别人听的谎言 提交于 2019-11-26 19:22:04
分类 运算符 操作 操作数 结果类型 范例 算术运算符 + 加 整数,实数 整数,实数 X + Y - 减 整数,实数 整数,实数 Result - 1 * 乘 整数,实数 整数,实数 P * InterestRate / 实数除 整数,实数 实数 X / 2 div 整数除 整数 整数 Total div UnitSize mod 取模 整数 整数 Y mod 6 +(一元) 符号等同 整数,实数 整数,实数 +7 -(一元) 符号相反 整数,实数 整数,实数 -X 布尔运算符 not 否定 布尔型 Boolean not (C in MySet) and 与 布尔型 Boolean Done and (Total > 0) or 或 布尔型 Boolean A or B xor 异或 布尔型 Boolean A xor B 逻辑(按位)运算符 not 按位否定 整数 整数 not X and 按位与 整数 整数 X and Y or 按位或 整数 整数 X or Y xor 按位异或 整数 整数 X xor Y shl 按位左移 整数 整数 X shl 2 shr 按位右移 整数 整数 Y shr I 字符串运算符 + 连接 字符串、压缩串、字符 字符串 S + '.' 指针运算符 + 指针加 字符指针,整数 字符指针 P + I - 指针减 字符指针,整数 字符指针,整数 P

first集合follow集的求法

匆匆过客 提交于 2019-11-26 09:57:21
FIRST集的定义 : 设G=(VT,VN,P,S)是上下文无关文法 FIRST(a)={a|a=>*ab,a∈VT, a,b∈V*} 若a=>*ε则规定ε∈FIRST (a) FIRST(α)就是从α可能推导出的所有开头终结符号和可能的ε所构成的集合。 FIRST集的分析方法 : 对于文法中的符号X∈VN∪VT,其FIRST(X)集合可反复应用下列规则计算,直到其FIRST(X)集合不再增大为止: 1)若 X∈VT,则FIRST(X)={X}。 2)若X∈VN,且具有形如X→aα的产生式(a∈VT),或具有形如X→ε的产生式,则把a或ε加进FIRST(X)。//把X能推出的第一个终结符加入FIRST(X)。 3) 设G中有形如X→Y1…Yk的产生式,其中X,Y1…Yk∈VN,且Y1…Yi-1均能=>*ε(1≤i≤k),则FIRST(Y1)-{ε},…, FIRST(Yi-1)-{ε},FIRST(Yi)都包含在FIRST(X)中。// Yi推导不出ε,所以Yi+1不在FIRST(X)中。 4) 若对一切1≤i≤k,均有ε∈FIRST(Yi),则将ε符号加进FIRST(X)。//若X=>*ε,则将ε加入FIRST(X)。 FIRST集的求法: 对于文法G的任一符号串α=X1X2…Xn可按下列步骤构造其FIRST(α)集合: 1) 置FIRST(α)=φ 2) 将FIRST(X1