Object Pascal运算符
l 赋值运算符
1. 赋值表达式也是通过语句来实现的,语句用来控制操作符和表达式。
2. 赋值语句是将赋值符号“:=”右边的表达式值赋给左边的目标。
3. 表达式左右两边类型必须相容
l 算数运算符
1. 一元运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
+ |
表正数 |
Integer Real |
Integer Real |
- |
表负数 |
Integer Real |
Integer Real |
2. 二元运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
+ |
加 |
Integer或Real |
有一个为Real,结果为Real |
- |
减 |
Integer或Real |
有一个为Real,结果为Real |
* |
乘 |
Integer或Real |
有一个为Real,结果为Real |
/ |
除 |
Integer或Real |
Real |
Div |
整除 |
Integer |
Integer |
Mod |
求余 |
Integer |
Integer |
X Div Y的结果是X/Y的结果得到的整数。
X Mod Y 是X/Y后的余数。
Y值均不能为零
l 逻辑运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
And |
逻辑与 |
Boolean |
Boolean |
Or |
逻辑或 |
Boolean |
Boolean |
Not |
逻辑非 |
Boolean |
Boolean |
Xor |
逻辑异或 |
Boolean |
Boolean |
And:相当于“并且”。
Not:把true变为false,把false变为true。
Or:相当与“或者”的意思。
Xor:一个为true一个为false时,结果为true。
l 关系运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
= |
判断是否相等 |
多种 |
Boolean |
<> |
判断是否不等 |
多种 |
Boolean |
< |
判断是否小于 |
多种 |
Boolean |
> |
判断是否大于 |
多种 |
Boolean |
<= |
判断是否小与等于 |
多种 |
Boolean |
>= |
判断是否大与等于 |
多种 |
Boolean |
关系运算符号反映的是两个数据之间的关系,其操作数可以是一般类型,也可以是类、对象、接口或字符串。关系运算的结果是逻辑型。
l 位运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
Not |
按位取反 |
Integer |
Integer |
And |
按位取与 |
Integer |
Integer |
Or |
按位取或 |
Integer |
Integer |
Xor |
按位异或 |
Integer |
Integer |
Shl |
按位左移 |
Integer |
Integer |
Shr |
按位右移 |
Integer |
Integer |
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
Not |
按位取反 |
Integer |
Integer |
And |
按位取与 |
Integer |
Integer |
Or |
按位取或 |
Integer |
Integer |
Xor |
按位异或 |
Integer |
Integer |
Shl |
按位左移 |
Integer |
Integer |
Shr |
按位右移 |
Integer |
Integer |
Not:是一元操作符,其他的是二元操作符。
Xor:当两个位想异时,结果为“1”,否则为“0”。
Shl:eg:E1 shl E2就是E1乘以2的E2次方。
Shr:eg:E1 shr E2 就是E1除以2的E2次方。
l 集合运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
+ |
取并集 |
集合型 |
集合型 |
- |
取交集 |
集合型 |
集合型 |
* |
取交集的补集 |
集合型 |
集合型 |
= |
判断两个集合是否相等 |
集合型 |
Boolean |
<> |
判断两个集合是否不等 |
集合型 |
Boolean |
In |
判断左边的集合与右边的集合是否有从属关系 |
集合型 |
Boolean |
<= |
判断左边的集合是否是右边集合的子集 |
集合型 |
Boolean |
>= |
判断右边的集合是否是左边集合的子集 |
集合型 |
Boolean |
l 指针运算符
操作符 |
操作 |
操作数据类型 |
结果数据类型 |
^ |
取指针地址内容 |
指针 |
指针指向内容的类型 |
+ |
增加指针地址偏移量 |
指针、Integer |
指针、Integer |
- |
减少指针地址偏移量 |
指针、Integer |
指针、Integer |
= |
判断两指针指向的地址是否相同 |
指针 |
Boolean |
<> |
判断两指针指向的地址是否不同 |
指针 |
Boolean |
@ |
取地址 |
变量 |
地址 |
l 地址运算符
地址运算符@是在对地址操作时使用,其返回的是操作数的地址。
Var
x,y:Integer;
p:^Integer;
Begin
x:=80;
p:=@x;
y:=P^;
end
l 运算符优先级
运算符 |
优先级 |
@,not |
1(最高) |
*,/,div,mod,and,shl,shr,as |
2 |
+,-,or,xor,and |
3 |
>,<,>=,<=,<>,=,in,is |
4(最低) |
• 两个运算符间的操作,先参加高优先级的运算
• 优先级一样,则从左到右依次运算。
• 有括号先算括号内运算。
附习题
1、 创建一个delphi的application项目。在窗体上加入一个按钮和一个输入框。在“实现”部分声明一个符点类型变量f;在初始化部分对f赋值为100。当单击按钮时,把f的值加上100,并显示在输入框内。
implementation
{$R *.dfm} var f :real;
procedure TForm1.Button1Click(Sender: TObject); begin self.Edit1.Text := floattostr(f); end; initialization f := 100; |
2、 创建一个delphi的application项目。在项目中创建有两个windows窗体,分别是 form_main和form_t ;form_main是项目的主窗体。在form_t 中的 “接口”部分和“实现”部分中分别定义整形变量 i1和i2。在窗体 form_main中调用form_t中的i1和i2,是否可以调用?
var i1 :integer;
implementation
var i2 :integer;
|
Form_main中 use 添加Unit2
只能调用i1
3、 创建一个delphi的application项目。在窗体上加上一个按钮和一个输入框,在单击按钮的事件中声明两个整形变量X和Y,一个指针,请通过指针传递X和Y的值,并把值显示在输入框内。
procedure TForm1.Button1Click(Sender: TObject); var x,y :integer; var p:^integer; begin x := 10; p := @x; y := p^;
self.Edit1.Text := inttostr(y);
end;
|
4、 创建一个delphi的application项目。声明一个常量x = 10 ;请执行如下代码,请改正代码:
if(x>5 and x<2)
begin
self.Edit1.Text := 'true';
end
else
begin
self.Edit1.Text := 'false';
end;
改成
const x :integer = 10; if((unit1.x>5) and (unit1.x<2)) then begin self.Edit1.Text := 'true'; end else begin self.Edit1.Text := 'false'; end; |