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; |