在上一章的3.3简单表达式中,我们提到了运算的次序。在程序设计中,我们把这种运算的次序称作操作符(Operator)的优先级。那么,关系操作符和逻辑操作符的优先级是怎么样的呢?
和简单表达式一样,括号的优先级仍然是最高的。无论什么情况都应该先从左到右地计算括号内的结果。当算术操作符、关系操作符和逻辑操作符处于同一级的括号中时,则分别从左向右地依次进行逻辑非运算、算术运算(遵循算术运算的优先级)、关系运算、逻辑与运算和逻辑或运算。(记作“不算关羽活”)。
下面我们来实践一下,看一段程序:(程序4.1.2)
#include "iostream.h"
int main()
{
int mark;
cout <<"请输入成绩(0~100): ";
cin >>mark;
if (mark>=80 && mark <=100) cout <<"Good!" <<endl;
if (mark>=60 && mark <80) cout <<"So so" <<endl;
if (mark>=0 && mark <60) cout <<"Please work harder!" <<endl;
if (mark<0 || mark >100) cout <<"ERROR!" <<endl;
return 0;
}
第一次运行结果:
请输入成绩(0~100):100
Good!
第二次运行结果:
请输入成绩(0~100):75
So so
第三次运行结果:
请输入成绩(0~100):59
Please work harder!
第四次运行结果:
请输入成绩(0~100):105
ERROR!
我们可以看到,将关系运算和逻辑运算配合使用,可以将数值有效地分段。以上这段程序的功能就是按照不同段的数值输出不同的结果,如果输入的数值超出正常的取值范围,则输出出错信息。
算法时间:纠错
熟悉电脑软件的同学都知道,不少软件或程序有时候会有漏洞(Bug),使得程序的安全性或稳定性受到影响。而产生这些漏洞的部分原因就是程序员在设计程序时有所疏漏,忘记了去考虑一些可能引起错误的特殊情况。我们把这些可能引起程序异常的情况称为临界情况。比如在a/b中,b=0就是一种临界情况。如果不考虑到这种情况,则可能导致除数为零而使整个程序崩溃。我们学会了if语句以后就能够从一定程度上避免一些可以预知的错误,把那些临界情况引入纠错程序。(比如输出出错信息,或及时中止程序)










