运算符运用的要点

技术与开发

学习内容:Pascal语言

学习进度:第四课

上手难度:★

考试类型:二级Delphi

运算符考核的难度不大,通常的考查形式是在选择题中给出一个复杂的表达式,要求给出正确的运算结果来检验考生的理解程度。要完全掌握这个知识点,要弄清楚运算符的优先级别并能分析复杂的表达式,此外还要明确区分除、整除、求模运算符的使用方法。

一、了解运算符的含义及分类

运算符也称为算符,算符的操作对象称为操作数。表达式是由各种运算符把常量、变量、函数连接起来并且具有确定的值的式子。例如在数学中b2-4ac, 在Pascal语言中就要写成sqr(b)-4*a*c。表达式有多种运算符,因此表达式的种类也是多样的,主要有算术表达式、关系表达式、逻辑表达式、字符表达式等。

运算符按所带操作数的个数分为两类:单目运算符是对一个操作数操作,例如 not flag、+a;双目运算符是对两个操作数操作,例如a>20。

运算符有几类特别的重要,需要重点关注:赋值运算符,例如benben:=10//在Pascal中赋值运算符是“:=”;算术运算符,例如5 div 3//5整除3的值;逻辑运算符,例如(Age>60)or(Age<15);关系运算符,例如X>=Y;集合运算符,例如My Key in Keys;位运算符,例如A and B//按位进行操作,返回结果为整型。

小提示:进行算术运算时要注意,在不同类型变量之间运算前要进行类型转换。例如三个变量,a、b为整型,c为实型,现在把3赋值给变量a,把4.5赋值给变量c,然后需要把a和c之和赋值给b,此时进行加法运算前需要把变量c的类型转换为整型,否则编译器将报错。

二、牢记运算符的优先级别

考生要牢记运算符的优先级别,考题通常给出一个复杂表达式,要求给出正确的运算结果,考生要熟练掌握各种常用运算符的运算顺序才能计算出表达式的值。运算符的优先级别如图所示:

在同级运算中,按从左到右的顺序计算。下面我们举例说明运算符的详细运算顺序:表达式sqr(9)-4*(1+2)*Abs(-3)+3 mod 2的运算结果是多少。根据运算优先级别,首先得出sqr(9)-4*3*Abs(-3)+3 mod 2,然后表达式变成81-4*3*3+3 mod 2,再计算乘的关系双目运算符得出81-36+1,最后计算加的关系双目运算符,最后结果为46。

在考试中通常会给出相对较为复杂的表达式,考生只要按照上述解答方法,根据运算的优先级别一步一步地进行计算,只要仔细就能拿到分数。

三、重点关注易出错的运算符

1.正确区分除和整除

在Pascal中,除法分为浮点数除法和整数除法。浮点数除法的运算符是“/”,除数和被除数可以为整型或者浮点型,结果类型为浮点型。例如5.0/2=2.5, 5/2.0=2.5,4/2=2.0而不等于2。

整数除法的运算符是div,除数和被除数只能为整型,结果类型为整型。div运算结果只取商的整数部分,小数部分直接丢弃。参与div运算的两个对象不能为实型,例如20div3=6,5div10=0,-15div4=-3。

2.区分求余运算符和整除运算符的运算结果

在Pascal中,求余运算符是mod,也叫求模运算符。它的操作数类型必须为整型,运算结果也为整型。两个整型操作数A、B,AdivB,运算结果是A除以B的商的整数部分,例如 5div3 的结果是1。AmodB,运算结果是A除以B的余数部分,例如 5mod3的结果是2。

读者反馈

读者 袁强:通过对上期常量和变量的学习,我想请教一下,C语言用static来声明静态变量,那么Delphi中用什么来声明静态变量呢?

小新点评:Delphi中没有声明静态变量的函数。不过可以通过{$J}的开关来控制编译器是否允许程序修改常量。Delphi中在{$J+}状态下定义的常量可以被修改,常量在此时相当于一个可以被初始化数值的变量。在{$J-}状态定义的常量是真正的常量,任何尝试对常量的修改都会使编译器报错。