- C++从零开始学(视频教学版)(第2版)
- 王英英
- 450字
- 2025-02-22 15:52:07
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。