4。ObjectPascal运算符与表达式 运算就是对数据的加工和处理过程,运算符是在代码中对各种数据类型的值进行运算的符号。 在ObjectPascal中,运算符分为:单目运算符和双目运算符。 表达式是表示某个求值规则的运算公式,由运算符和圆括号将常量、变量、函数、对象等操作数组合而成。4。1算术运算符与算术表达式 1。算术运算符 ObjectPascal中的算术运算符: 运算符 名称 例子 运算符 名称 例子 取正 a Div 整数除 aDivb 取负 b Mod 求余 aModb 乘 ab 加 ab 除 ab 减 ab运算结果自动向高精度转化;除法运算的数无论是整型还是实型,结果都是实型;Div和Mod的运算数必须是整数,结果是整型; 2。算术运算符的优先级 运算符 优先级 取正、取负 1hr、 2hrDiv、Mod 3hr、 4hr同级运算自左至右进行运算,表达式中右圆括号,则先计算括号内的表达式,如果有多层括号,先计算内层括号中的表达式。 3。算术表达式 符合ObjectPascal规定的算术表达式要考虑三个方面:语法、优先级、类型。我们举例说明: 例如: 数学式 算术表达式 x(yz) x(yz) (2xy)x (2。0xy)x lg4。50。3ln4。5 log10(4。5)0。3ln(4。5) (5x2。33)(35) (5Power(x,2。3)3。0)(3。05。0)4。2逻辑运算符与布尔表达式4。2。1逻辑运算符 逻辑运算符包括:布尔运算符、位运算符和关系运算符。 1。布尔运算符 布尔运算符只能对布尔型操作数进行运算,结果为布尔型。基本的布尔运算符:NOT非运算符计算运算数的相反数,单目运算符。xNOTxTrueFalseFalseTrueAND与运算符只有当两个操作数都为True时,运算结果才为True。xyxANDyFalseFalseFalseFalseTrueFalseTrueTrueTrueTrueFlaseFalseOR或运算符只要两个操作数中有一个是True,运算结果就为True。xyxORyFalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalseTrueXOR异或运算符当两个操作数不同时运算结果为TruexyxXORyFlaseFalseFalseFalseTrueTrueTrueTrueFalseTrueFalseTrue 2。位运算符 位运算是对整型操作数的二进制位执行操作,位是指二进制比特,按位运算是指不考虑相邻的运算结果,只计算两个操作数中对应的位。 位运算符 操作符 举例 功能说明 NOT NOTx 将x的二进制位每位求反,即1变为0,0变为1。 AND xANDy 将两个操作数对应的位进行与运算,同为1时结果为1 OR xORy 将两个操作数对应的位进行或运算,同为0时结果为0 XOR xXORy 将两个操作数对应的位进行异或运算,对应位不同时为1 SHL xSHLy 将x的二进制位向左移动y位,左移1位相当于乘2 SHR xSHRy 将x的二进制位向右移动y位,右移1位相当于除2 示例: x y 操作 结果 00100011hrNOTx 11011100hr00100011hr11101110hrxANDy 00100010hr00100011hr11101110hrxORy 11101111hr00100011hr11101110hrxXORy 11001100hr12411111100 2hrxSHLy 11111000hr12411111100 2hrxSHRy 01111110hr3。关系运算符 关系运算符用于比较两个同类型的数据的值,其结果为布尔型。 关系运算符 关系运算符 操作 操作数类型 等于 简单类型、字符串、可变类型、类、类引用、指针、集合类型 不等于 简单类型、字符串、可变类型、类、类引用、指针、集合类型 小于 简单类型、字符串、可变类型 大于 简单类型、字符串、可变类型 小于等于 简单类型、字符串、可变类型、集合类型 大于等于 简单类型、字符串、可变类型、集合类型 集合类型的关系运算:假设A和B是两个集合,则:若A和B的元素完全相同,则AB为True,否则AB为T若A的任何一个元素也是B的元素,则AB为True,并称A是B的子集;若B的任何一个元素也是A的元素,则AB为True,并称B是A的子集;4。2。2布尔表达式 布尔表达式由布尔运算符和布尔类型的操作数组成。利用布尔表达式可以描述比较复杂的判断条件。 例如:要描述实数是否在区间〔10,100〕内,则布尔表达式:(x10。0)and(x100。0) 要描述实数是否在区间〔10,100〕之外,则布尔表达式:(x10。0)or(x100。0)4。3字符串运算符 ObjectPascal的字符串运算符:,用于连接两个或更多的字符串。 字符串表达式的格式:字符串表达式{字符串字符} 示例:Helloworld!结果为Helloworld!Delphi程序设计结果为Delphi程序设计12345abcxyz结果为12345abcxyz4。4运算符的优先级 除了以上运算符外,还有指针运算符、集合运算符、类运算符和取地址运算符等(这些我们在后面的内容中逐步学习),所有运算符都具有优先级,ObjectPascal中运算符的优先级: 优先级 运算符 描述 1hr、NOT、、 单目运算符 2hr、、DIV、MOD、AND、SHL、SHR 乘除及部分逻辑运算符 3hr、、OR、XOR 加减及或运算符 4hr、、、、、、in、is 关系、集合成员及类型比较运算符 以上运算符中有一部分是目前为止我们没有学习过的,在后面的章节中会逐步学习到。