打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Object Pascal 运算符
Object Pascal 的运算符
运算符是程序代码中对各种类型的数据进行计算的符号,通常分为算数运算符、逻辑运算符、比较运算符和按位运算符。
1.算术运算符
Object Pascal 语言的算术运算符,如表1-9 所示。
表1-9 Object Pascal 语言算术运算符
操作符操作操作数据类型结果类型
+加整型、实型整型、实型
-减整型、实型整型、实型
*乘整型、实型整型、实型
/除整型、实型整型、实型
mod取余整型整型
div整除整型整型
2.逻辑运算符
逻辑运算符操作对象和返回值都为布尔型,如表1-10 所示。
表1-10 Object Pascal 语言逻辑运算符
操作符操作操作数据类型
not非布尔
and与布尔
or或布尔
xor异或布尔
3.比较运算符
比较运算符返回值为布尔型(True 或False),关系运算符如表1-11 所示。
表1-11 Object Pascal 语言关系运算符
操作符操作操作数据类型
=等于简单数据类型、指针、集合、字符串或字符串包
<>不等于简单数据类型、指针、集合、字符串或字符串包
<小于简单数据类型、指针、集合、字符串或PChar
>大于简单数据类型、指针、集合、字符串或PChar
<=小于等于简单数据类型、指针、集合、字符串或PChar
>=大于等于简单数据类型、指针、集合、字符串或PChar
<=子集集合
>=父集集合
4.按位运算符
通过按位运算符可以修改一个变量的单独的位。可以进行按位与、或、非、异或,也可以对一个数进行向左(Shl)或向右(Shr)移位操作。Delphi 的按位运算符共有六个: not and or xor shr shl; 其中的 not and or xor 也叫逻辑运算符, 其实功能都是一样的, 因为不管什么数据追到底都是 0 和 1 的组合;在 Delphi 内嵌汇编中, 应该也没什么区别。
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;Button6: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);procedure Button6Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}constw1: Word = 61680; {二进制表示: 11110000 11110000}w2: Word = 3855; {二进制表示: 00001111 00001111}varw: Word;{not 运算, 只有一个运算数}procedure TForm1.Button1Click(Sender: TObject);beginw := not w1;{not 就是按位(给二进制的每一位)取反}{11110000 11110000 取反后就是:}{00001111 00001111 }ShowMessage(IntToStr(w)); {3855}end;{and 运算, 需要两个运算数}procedure TForm1.Button2Click(Sender: TObject);beginw := w1 and w2;{and 就是把两个运算数按位对比, 如果相同(都是1或都是0)返回1; 不同返回0}{w1: 11110000 11110000 与}{w2: 00001111 00001111 每一位都不同, 所以返回:}{w : 00000000 00000000}ShowMessage(IntToStr(w)); {0}end;{or 运算, 需要两个运算数}procedure TForm1.Button3Click(Sender: TObject);beginw := w1 or w2;{or 就是把两个运算数按位对比, 只有其中一个是1就返回1; 都是0才返回0}{w1: 11110000 11110000 与}{w2: 00001111 00001111 or 后会返回:}{w : 11111111 11111111}ShowMessage(IntToStr(w)); {65535}end;{xor 运算, 需要两个运算数}procedure TForm1.Button4Click(Sender: TObject);beginw := w1 or w2;{and 就是把两个运算数按位对比, 只有两个不一样才返回1; 一样(都是0或都是1)则返回0}{w1: 11110000 11110000 与}{w2: 00001111 00001111 xor 后会返回:}{w : 11111111 11111111}ShowMessage(IntToStr(w)); {65535; 两个例数不太好, 没给 xor 和 or 区别明显}end;{shr 运算, 只有一个运算数}procedure TForm1.Button5Click(Sender: TObject);beginw := w1 shr 1;{shr 是按位右移, shr 1 是右移一位}{w1: 11110000 11110000 右移一位后是:}{w : *1111000 01111000 前面的*就是0了}ShowMessage(IntToStr(w)); {30840}{同理, 可以移动几位, 譬如 3 位}w := w1 shr 3;ShowMessage(IntToStr(w)); {7710}{w1 shr 3 相当与 w1 div 2的3次方}w := w1 div 8;ShowMessage(IntToStr(w)); {7710}end;{shl 运算, 只有一个运算数}procedure TForm1.Button6Click(Sender: TObject);vari: Integer;beginw := w1 shl 1;{shr 是按位左移}{w1: 11110000 11110000 左移一位后是:}{w : 1110000 111100000 }ShowMessage(IntToStr(w)); {57824}{左移 3 位}w := w1 shl 3;ShowMessage(IntToStr(w)); {34688}{w1 shl 3 相当与 w1 * 2的3次方}w := w1 * 8;ShowMessage(IntToStr(w)); {34688}{注意这里有个问题: w1*8 以后怎么小了呢?}{因为前面已经定义了 w 是 Word 类型的, 它的大小只有2个字节(二进制16位), 超出会忽略}{如果换成32位(4字节)的 Integer 类型, 肯定就会有真实的结果:}i := w1 shl 3;ShowMessage(IntToStr(i)); {493440}i := w1 * 8;ShowMessage(IntToStr(i)); {493440}end;end.
5.运算符优先级
一个表达式中可能有多个运算符,它们的运算是有先后顺序的,不同的运算符在表达式中的优先级如表1-12 所示。
表1-12 运算符的优先级
级别运算符
第一级(最高级).  ^
第二级@  not
第三级* / div mod and as shl shr
第四级
+ - or xor
第五级(最低级)= <> < > <= >= in is
Delphi 的特殊符号
@:取址运算符
var int:integer; p:^integer;begin new(P); int:=24; p:=@int; dispose(P);end;
^:指针的引用解析操作符
符号 ^ 有两种用途,当它出现在类型标识符之前,如^typeName,表示一个类型,该类型表示指向typeName类型变量的指针;当它出现在指针变量之后,如pointer^,该符号对指针解除参照,也就是说,返回存储在内存地址(该地址保存在指针中)的值指针,指向的数据.
var I: Integer; PI: ^Integer; begin I := 10 PI := @I;; PI^ := 20; I := PI^;end;
取指针的方法,比如y:=p^; 就是指为Y赋值指针P
#:ASCII码值表示符;
const
tab_key=#9;//TAB键的ASCII值
$: 十六进制符
var pint:^integer;begin new(pint); showmessage(inttohex(integer(@pint),8)); pint^:=$ff; showmessage(inttohex(pint^,4));end;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Delphi 中的 IfThen 函数
Delphi指针基本知识
Delphi指针类型浅析(附件)
详测 Generics Collections TDictionary(5): 多种 Cr...
JSON 之 SuperObject(4): 增、删、改
谈谈 Delphi 的类型与指针[2]
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服