Delphi学习笔记三——运算符
来源:互联网 发布:java怎么解析excel 编辑:程序博客网 时间:2024/05/01 09:59
今天我们来看一下Delphi的运算符:
Delphi的运算符分为:@, not, and ^的一元运算符;*, /, div, mod, and, shl, shr, as, +, -, or, xor, =, >, <, <>, <=, >=, in, and is为二元运算符
一、赋值运算符
对于Pascal的新手来说,Delphi的赋值运算符和其它常用编程语言的赋值运算符不大一样,需要用:=来表示。例如:
Number := 5;
二、比较运算符
对于Object Pascal来说,用=运算符来对两个表达式或两个值进行逻辑比较运算;用<>表示不等于运算符,这和其它语言用==、!=来表示有比较大的区别,新手比较容易搞错。
三、逻辑表达式
Pascal用and和or作为逻辑与和逻辑或的运算符,用not作为逻辑非的运算符。例如:
if A and B then //逻辑与while A or B do //逻辑或if not A then //逻辑非A xor B //逻辑异或A shl B //A的二进制向左移动B位,尾数补零A shr B //A的二进制向右移动B位,首部补1
四、算术运算符
这里需要注意的是,在Pascal中,特意定义了针对整数除的运算符——div。在两个整数向楚时,自动截取余数取整;mod取余。主要使用在对整数操作中。x mod y = x - (x div y) * y;一个运行时错误是发生在当y为0时,对X/Y、X div Y、X mod Y的操作中。
五、位运算
在Pascal中的左移和右移是以shl和shr来表示的。
六、加减运算符
在Pascal中,提供了Inc()和Dec()来执行其它语言中++和--的操作。例如
Inc(variable); //variable ++Dec(variable); //variable --Inc(variable,3); //variable+3Dec(variable,3); //variable-3
七、指针运算符
其中,关系运算符中的<, >, <=, and >=可以用来操作“PChar”、“PWideChar”类型。
+:将指针指向的地址增加偏移量;
-:将指针指向的地址减去偏移量;
^:1.取指针所指向地址中的内容(位于指针后);2.定义基类型的指针(位于基类型前面)
=:判断两个指针是否指向同一地址;
<>:判断两个指针是否指向不同地址;
如果P=Q为true,则表示P、Q指向同一个地址;+,-操作符用来增加或减少一个字符指针的偏移量。
八、集合运算符
+:集合并;
-:集合差;
*:集合交;
<=:左边集合是否包含于右边集合;
>=:左边集合是否包含右边集合;
=:左边集合是否等于右边集合;
<>:左边集合是否不等于右边集合;
In:左边集合是否与右边集合有从属关系;
例如:O in X+Y 相当于O在X或者Y中;O in X-Y相当于O只在X并不在Y中;O in X *Y相当于包含在X和Y中;X<=Y为真表示X的所有元素都包含在Y 内;O in S表示O是S的一个元素;
九、@运算符
@运算符返回一个变量、过程、方法或函数的地址。在用于方法时,必须用@TMyClass.DoSomething。
十、布尔运算符
布尔运算符有以下四个:not(非)、and(与)、or(或)、xor(异或)。
十一、字符串运算符
关系运算符中的“=”、“<>”、“<”、“>”、“<=”、“>=”都可以进行字符串操作,“+”用来进行字符串的连接。
十二、关系型运算符
关系型运算符用于比较两个操作数。其中=, <>, <=, and >=可以用于集合;= and <> 也可以用于指针;
I=J为true表示I和J的值相同;需要注意的是,1.这里的两个操作数必须是兼容的 并且可以相比;2.使用<>, <=, and >=来比较PChar和PWideChar时,其指针指向的数组内存地址必须相同。
十三、类运算符
类运算符包括as 和 is。
十四、运算符的规则
运算符以以下顺序执行:
@, notfirst (highest)*, /, div, mod, and, shl, shr, assecond+, -, or, xorthird=, <>, <, >, <=, >=, in, isfourth (lowest)
十五、变量类型转换
type Func = function(X: Integer): Integer;var F: Func; P: Pointer; N: Integer;
你可以进行以下操作
F := Func(P); { Assign procedural value in P to F }Func(P) := F; { Assign procedural value in F to P }@F := P; { Assign pointer value in P to F }P := @F; { Assign pointer value in F to P }N := F(N); { Call function via F }N := Func(P)(N); { Call function via P }
- Delphi学习笔记三——运算符
- Delphi学习笔记三——运算符
- Delphi学习笔记三——运算符
- Delphi学习笔记三 运算符
- 【C++】学习笔记三——算术运算符
- delphi 三目运算符
- PHP学习笔记(三):运算符
- MySQL学习笔记(三)--运算符
- Swift学习笔记三:运算符注意事项
- Delphi学习笔记(三)
- 我的MYSQL学习笔记(三)——运算符
- The Swift Programming Language学习笔记(三)——基本运算符
- C#学习笔记(三)—–C#高级特性:运算符重载
- Delphi基础(三)运算符及其优先级
- PHP学习笔记——运算符
- Python学习笔记 —— 运算符
- C#学习笔记——运算符
- C语言笔记系列之三——运算符
- svn的搭建
- c# winform 程序打包部署
- 程序员如何做出“不难看”的设计
- 使用this调用另一个重载的构造器
- iPhone 项目中BaseSDK 和 DeploymentTarget的区别
- Delphi学习笔记三——运算符
- linux操作系统的组成有哪几部分?
- Ubuntu下gcc安装及使用
- android Activity之间数据传递 Parcelable和Serializable接口的使用
- C++发送邮件-jwsmpt
- 使用HTML5 Web存储实现离线工作
- Trouble(多校联合)
- Windows环境 Apache 安装后手动添加Service方法
- myeclipse安装插件的方法