C++教程:C++ if语句讲解

2020-01-06 12:03:00刘景俊


在上一章的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语句以后就能够从一定程度上避免一些可以预知的错误,把那些临界情况引入纠错程序。(比如输出出错信息,或及时中止程序)

三、&&和||的妙用

有时候我们做数学题目会遇到这样的问题——(1+5*8)/6*0/(5/6+2),当我们发现整个式子是乘式,并且有一个乘数为0的时候,则会不再做更多的计算,把结果脱口而出。因为无论后面的乘数是什么,都无法改变结果了。