Delphi学习笔记三——运算符

今天我们来看一下Delphi的运算符:

Delphi的运算符分为:@, not, and ^的一元运算符;*, /, div, mod, and, shl, shr, as, +, -, or, xor, =, >, <, <>, <=, >=, in, and is为二元运算符

一、赋值运算符

对于Pascal的新手来说,Delphi的赋值运算符和其它常用编程语言的赋值运算符不大一样,需要用:=来表示。例如:

[delphi]  view plain copy
  1. Number := 5;  

 

二、比较运算符

对于Object Pascal来说,用=运算符来对两个表达式或两个值进行逻辑比较运算;用<>表示不等于运算符,这和其它语言用==、!=来表示有比较大的区别,新手比较容易搞错。

 

三、逻辑表达式

Pascal用and和or作为逻辑与和逻辑或的运算符,用not作为逻辑非的运算符。例如:

[delphi]  view plain copy
  1. if A and B then   //逻辑与  
  2. while A or B do  //逻辑或  
  3. if not A then      //逻辑非  
  4. xor B              //逻辑异或  
  5. shl B              //A的二进制向左移动B位,尾数补零  
  6. 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()来执行其它语言中++和--的操作。例如

[delphi]  view plain copy
  1. Inc(variable);  //variable ++  
  2. Dec(variable); //variable --  
  3. Inc(variable,3);  //variable+3  
  4. Dec(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。

 

十四、运算符的规则

运算符以以下顺序执行:

[delphi]  view plain copy
  1. @, not  first (highest)  
  2. *, /, divmodandshlshras   second  
  3. +, -, orxor   third  
  4. =, <>, <, >, <=, >=, inis   fourth (lowest)  


 十五、变量类型转换

[delphi]  view plain copy
  1. type Func = function(X: Integer): Integer;  
  2. var  
  3.     F: Func;  
  4.     P: Pointer;  
  5.     N: Integer;  

你可以进行以下操作

[delphi]  view plain copy
  1. F := Func(P);           { Assign procedural value in P to F }  
  2. Func(P) := F;           { Assign procedural value in F to P }  
  3. @F := P;                { Assign pointer value in P to F }  
  4. P := @F;                { Assign pointer value in F to P }  
  5. N := F(N);              { Call function via F }  
  6. N := Func(P)(N);        { Call function via P }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值