C++ break和continue的用法(非常详细)
在初步掌握 C++ 循环结构(while、do-while 和 for)用法的基础上,本节带大家掌握 break 和 continue 的用法。
虽然循环通常会按部就班地重复执行,但也可能遇到意外情况,这些情况会打破循环的正常流程。例如:
在这些例子中,“生病”和“年龄超过 50 岁”这两个因素打破了原来的循环,属于循环中的特殊情况。这些特殊情况需要特殊处理:有的需要提前终止循环(例如生病退休),有的需要跳过当前轮次的循环(不增加工资)而开始下一轮次的循环。
为了处理循环中的特殊情况,C++ 提供了两个关键字:break 和 continue。
因此,我们可以使用 break 实现因特殊情况而提前结束循环。例如,用 break 来实现因“生病”这一特殊情况而需要“提前退休”(退出循环):
这样,if 条件语句负责判断是否发生了特殊情况,而 break 关键字则负责在特殊情况发生时提前结束循环。两者结合起来,就可以有效地实现因发生特殊情况而需要提前结束循环。
再来看一个实际的例子,以收支统计程序为例,我们可以用 break 关键字将其写成:
同时,它也表达了对“输入的收支金额为 0”这一特殊情况的处理:结束整个循环。循环语句可以无限地接受用户的输入,但当用户想结束输入时,只需输入满足 0 == nInput 这一特殊情况,即执行 break 语句即可结束整个循环。
如果使用的是 while 或 do while 循环,会直接判断循环条件是否满足以开始下一轮次的循环;如果使用的是 for 循环,则会接着执行更改循环变量的语句,然后判断循环条件是否满足以开始下一轮次的循环。
继续使用前面的收支统计例子,如果用户只想统计大于或等于 10000 元的收入和支出,可以用 continue 关键字将程序改写如下:
总结来说,break 和 continue 常常和条件判断语句一起使用。条件判断语句负责判断是否出现特定情况,而 break 和 continue 则用于处理特定情况:break 用于跳出当前循环语句的整个循环,即立刻结束当前循环控制语句;而 continue 只跳出本轮次的循环,直接准备开始执行下一轮次的循环。
下图展示了 break 和 continue 之间的区别:

图 1 break和continue之间的区别
虽然循环通常会按部就班地重复执行,但也可能遇到意外情况,这些情况会打破循环的正常流程。例如:
- 工作例子:一直不断地为祖国辛勤工作,只要我还活着。然而,如果生病了,只好提前退休。
- 工资调整的例子:公司有 100 名员工,除年龄超过 50 岁的人外,其余每个人的工资都增加 10000 元;
在这些例子中,“生病”和“年龄超过 50 岁”这两个因素打破了原来的循环,属于循环中的特殊情况。这些特殊情况需要特殊处理:有的需要提前终止循环(例如生病退休),有的需要跳过当前轮次的循环(不增加工资)而开始下一轮次的循环。
为了处理循环中的特殊情况,C++ 提供了两个关键字:break 和 continue。
C++ break语句
在介绍 switch 并列条件选择语句时,我们已经介绍过 break 关键字,它的作用是结束整个 switch 语句。与之类似,当 break 用在循环结构中时,它的作用是结束当前所在的循环语句,继续执行该循环语句之后的下一条语句。因此,我们可以使用 break 实现因特殊情况而提前结束循环。例如,用 break 来实现因“生病”这一特殊情况而需要“提前退休”(退出循环):
// 是否活着 bool bAlive = true; // 是否生病 bool bSick = false; while(bAlive) // 判断是否活着 { if(bSick) // 判断是否生病 { cout<<"生病了提前退休"<<endl; break; // 因为生病这一特殊情况而提前结束循环 } cout<<"为祖国辛勤工作"<<endl; // 改变循环控制条件 bAlive } // ...在执行循环体语句时,首先用 if 条件语句判断是否发生了特殊情况,例如是否生病了。如果发生特殊情况,bSick 的值会变为 true,程序将进入 if 条件语句内部执行。当遇到 break 关键字时,程序执行会跳出当前循环提,即结束当前循环体的执行。
这样,if 条件语句负责判断是否发生了特殊情况,而 break 关键字则负责在特殊情况发生时提前结束循环。两者结合起来,就可以有效地实现因发生特殊情况而需要提前结束循环。
再来看一个实际的例子,以收支统计程序为例,我们可以用 break 关键字将其写成:
int nTotal = 0; int nInput = 0; do { cout << "请输入你的收入或支出:"; cin >> nInput; // 对输入的数据进行判断 // 如果是 0 这种例外情况,表示输入结束,用 break 关键字结束整个循环 if (0 == nInput) break; // 正常情况,将输入的收支金额加总,再加到收支总额中 nTotal += nInput; } while (true); // 用 true 作为循环条件,表示循环会在内部因特殊情况而提前结束循环在这里,我们使用 true 作为 do while 循环语句的条件判断语句,但这并不是一个死循环,因为它有结束循环的条件。当用户输入的 nInput 为 0 时,程序会进入 if( 0 == nInput ) 条件语句执行,遇到其中的 break 关键字就会结束整个循环,从而避免成为死循环。
同时,它也表达了对“输入的收支金额为 0”这一特殊情况的处理:结束整个循环。循环语句可以无限地接受用户的输入,但当用户想结束输入时,只需输入满足 0 == nInput 这一特殊情况,即执行 break 语句即可结束整个循环。
C++ continue语句
break 关键字用于在某种条件下结束整个循环,而 continue 关键字则用于在某种条件下结束本轮次循环体的执行(即跳过 continue 关键字之后的本轮次循环体尚未执行的语句),然后直接继续下一轮次的循环,并不会结束整个循环。如果使用的是 while 或 do while 循环,会直接判断循环条件是否满足以开始下一轮次的循环;如果使用的是 for 循环,则会接着执行更改循环变量的语句,然后判断循环条件是否满足以开始下一轮次的循环。
继续使用前面的收支统计例子,如果用户只想统计大于或等于 10000 元的收入和支出,可以用 continue 关键字将程序改写如下:
// 收支统计程序 int nTotal = 0; int nInput = 0; do { cout << "请输入你的收入或支出:"; cin >> nInput; // 如果小于 10000 元,则不用统计在内 if ((nInput > -10000) && (nInput < 10000)) { continue; // 跳过本轮次循环尚未执行的循环体内的语句,即不进行统计 } // 对输入的收支额度进行统计 nTotal += nInput; } while (0 != nInput);在这个收支统计程序中,当 nInput 接收用户输入的数据后,我们用 if 条件语句判断输入的金额是否小于 10000 元。如果小于 10000 元,则表示该金额不用统计,此时会执行 if 条件语句中的 continue 语句,跳过后面的累加统计语句 nTotal += nInput;,直接跳转到条件表达式 0 != nInput 的计算,以判断是否需要开始执行下一轮次的循环。这样,就有效地处理了对“收支额度小于 10000”这类情况的特殊处理:结束本次轮次的循环,不将该金额统计在内。
总结来说,break 和 continue 常常和条件判断语句一起使用。条件判断语句负责判断是否出现特定情况,而 break 和 continue 则用于处理特定情况:break 用于跳出当前循环语句的整个循环,即立刻结束当前循环控制语句;而 continue 只跳出本轮次的循环,直接准备开始执行下一轮次的循环。
下图展示了 break 和 continue 之间的区别:

图 1 break和continue之间的区别
相关文章
- C语言break和continue的用法(非常详细)
- C语言break和continue的用法(附带实例)
- break和continue,C语言break和continue的用法和区别
- C++ break和continue用法详解
- C语言break和continue的区别(附带示例)
- C语言中的break和continue(非常详细,附带实例)
- C# break和continue语句:跳出循环
- C语言break和continue跳出循环(非常详细)
- C语言break和continue跳出循环(附带示例)
- goto,break和continue语句,C语言goto,break和continue跳转语句详解