C++从零开始学(视频教学版)(第2版)
上QQ阅读APP看书,第一时间看更新

5.7 疑难解惑

疑问1 do-while和while有什么区别?

对于do-while,当流程到达do后,立即执行循环体语句,然后对条件表达式进行判断。若条件表达式的值为真(非0),则重复执行循环体语句,否则退出,即“先执行后判断”的方式。

while语句是先判断后执行,有可能一次都不执行循环体。

do-while结构与while结构中都有一个while语句,很容易混淆。为明显区分它们,do-while循环体即使是一个单语句,习惯上也使用花括号包围起来,并且while(表达式)直接写在花括号“}”的后面。这样的书写格式可以与while结构清楚地区分开来。

疑问2 条件语句如何嵌套?如何匹配else子句?

if语句中的执行语句又是if语句,就构成了if语句嵌套的情形。

其一般形式可表示如下:

或者为

在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。

例如:

其中的else究竟与哪一个if配对呢?

应该理解为:

还是应理解为:

为了避免这种二义性,C++语言规定,else总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。

疑问3 switch语句的执行顺序是什么?

switch中case后的语句是自上而下执行的,遇到break才会跳出switch。