【2.Delphi语法基础】4.Object Pascal运算符与表达式

4.Object Pascal运算符与表达式

运算就是对数据的加工和处理过程,运算符是在代码中对各种数据类型的值进行运算的符号。

在Object Pascal中,运算符分为:单目运算符和双目运算符。

表达式是表示某个求值规则的运算公式,由运算符和圆括号将常量、变量、函数、对象等操作数组合而成。

4.1算术运算符与算术表达式

1.算术运算符

Object Pascal 中的算术运算符:

运算符名称例子运算符名称例子
+取正+aDiv整数除a Div b
-取负-bMod求余a Mod b
*a*b+a+b
/a/b-a-b
  • 运算结果自动向高精度转化;

  • 除法运算 / 的数无论是整型还是实型,结果都是实型;

  • Div 和 Mod 的运算数必须是整数,结果是整型;

2.算术运算符的优先级

运算符优先级
+ 取正、- 取负1
*、/2
Div、Mod3
+、-4

同级运算自左至右进行运算,表达式中右圆括号,则先计算括号内的表达式,如果有多层括号,先计算内层括号中的表达式。

3.算术表达式

符合 Object Pascal 规定的算术表达式要考虑三个方面:语法、优先级、类型。我们举例说明:

例如:

数学式算术表达式
x/(yz)x/(y*z)
(2x-y)/x(2.0*x-y)/x
lg4.5+0.3ln4.5log10(4.5)+0.3*ln(4.5)
(5x^2.3+3)/(3/5)(5*Power(x, 2.3)+3.0)/(3.0/5.0)

4.2逻辑运算符与布尔表达式

4.2.1逻辑运算符

逻辑运算符包括:布尔运算符、位运算符和关系运算符。

1.布尔运算符

布尔运算符只能对布尔型操作数进行运算,结果为布尔型。基本的布尔运算符:

  • NOT “非”运算符

    计算运算数的相反数,单目运算符。

    xNOT x
    TrueFalse
    FalseTrue
  • AND “与”运算符

    只有当两个操作数都为True时,运算结果才为True。

    xyx AND y
    FalseFalseFalse
    FalseTrueFalse
    TrueTrueTrue
    TrueFlaseFalse
  • OR “或”运算符

    只要两个操作数中有一个是True,运算结果就为True。

    xyx OR y
    FalseFalseFalse
    FalseTrueTrue
    TrueTrueTrue
    TrueFalseTrue
  • XOR “异或”运算符

    当两个操作数不同时运算结果为True

    xyx XOR y
    FlaseFalseFalse
    FalseTrueTrue
    TrueTrueFalse
    TrueFalseTrue

2.位运算符

位运算是对整型操作数的二进制位执行操作,“位”是指二进制比特,按位运算是指不考虑相邻的运算结果,只计算两个操作数中对应的位。

位运算符

操作符举例功能说明
NOTNOT x将x的二进制位每位求反,即1变为0,0变为1。
ANDx AND y将两个操作数对应的位进行与运算,同为1时结果为1
ORx OR y将两个操作数对应的位进行或运算,同为0时结果为0
XORx XOR y将两个操作数对应的位进行异或运算,对应位不同时为1
SHLx SHL y将x的二进制位向左移动y位,左移1位相当于乘2
SHRx SHR y将x的二进制位向右移动y位,右移1位相当于除2

示例:

xy操作结果
00100011NOT x11011100
0010001111101110x AND y00100010
0010001111101110x OR y11101111
0010001111101110x XOR y11001100
124=111111002x SHL y11111000
124=111111002x SHR y01111110

3.关系运算符

关系运算符用于比较两个同类型的数据的值,其结果为布尔型。

关系运算符

关系运算符操作操作数类型
=等于简单类型、字符串、可变类型、类、类引用、指针、集合类型
<>不等于简单类型、字符串、可变类型、类、类引用、指针、集合类型
<小于简单类型、字符串、可变类型
>大于简单类型、字符串、可变类型
<=小于等于简单类型、字符串、可变类型、集合类型
>=大于等于简单类型、字符串、可变类型、集合类型

集合类型的关系运算: 假设A和B是两个集合,则:

  • 若A和B的元素完全相同,则A=B为True,否则A<>B为True;

  • 若A的任何一个元素也是B的元素,则A<=B为True,并称A是B的子集;

  • 若B的任何一个元素也是A的元素,则A>=B为True,并称B是A的子集;

4.2.2布尔表达式

布尔表达式由布尔运算符和布尔类型的操作数组成。利用布尔表达式可以描述比较复杂的判断条件。

例如:要描述实数是否在区间[10,100]内,则布尔表达式:

(x >= 10.0) and (x <= 100.0)

要描述实数是否在区间[10,100]之外,则布尔表达式:

(x < 10.0) or (x > 100.0)

4.3字符串运算符

Object Pascal的字符串运算符:+,用于连接两个或更多的字符串。

字符串表达式的格式:

<字符串表达式> + {<字符串>|<字符>}

示例:

'Hello world' + '!'    // 结果为'Hello world!'
'Delphi' + '程序设计'    // 结果为'Delphi程序设计'
'12 3' + '4' + '5' + 'abc' + 'xyz'   // 结果为'12 345abcxyz'

4.4运算符的优先级

除了以上运算符外,还有指针运算符、集合运算符、类运算符和取地址运算符等(这些我们在后面的内容中逐步学习),所有运算符都具有优先级,Object Pascal中运算符的优先级:

优先级运算符描述
1@、NOT、+、-单目运算符
2*、/、DIV、MOD、AND、SHL、SHR乘除及部分逻辑运算符
3+、-、OR、XOR加减及或运算符
4=、<>、<、>、<=、>=、in、is关系、集合成员及类型比较运算符

以上运算符中有一部分是目前为止我们没有学习过的,在后面的章节中会逐步学习到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janeb1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值