C++编程中break语句和continue语句的学习教程
break语句
break语句可终止执行最近的封闭循环或其所在条件语句。控制权将传递给该语句结束之后的语句(如果有的话)。
break;
备注
break语句与switch条件语句以及do、for和while循环语句配合使用。
在switch语句中,break语句将导致程序执行switch语句之外的下一语句。如果没有break语句,则将执行从匹配的case标签到switch语句末尾之间的每个语句,包括default子句。
在循环中,break语句将终止执行最近的do、for或while封闭语句。控制权将传递给终止语句之后的语句(如果有的话)。
在嵌套语句中,break语句只终止直接包围它的do、for、switch或while语句。你可以使用return或goto语句从较深嵌套的结构转移控制权。
示例
以下代码演示如何在for循环中使用break语句。
#include<iostream>
usingnamespacestd;
intmain()
{
//Anexampleofastandardforloop
for(inti=1;i<10;i++)
{
cout<<i<<'\n';
if(i==4)
break;
}
//Anexampleofarange-basedforloop
intnums[]{1,2,3,4,5,6,7,8,9,10};
for(inti:nums){
if(i==4){
break;
}
cout<<i<<'\n';
}
}
在每个用例中:
1 2 3
以下代码演示如何在while循环和do循环中使用break。
#include<iostream>
usingnamespacestd;
intmain(){
inti=0;
while(i<10){
if(i==4){
break;
}
cout<<i<<'\n';
i++;
}
i=0;
do{
if(i==4){
break;
}
cout<<i<<'\n';
i++;
}while(i<10);
}
在每个用例中:
0 1 2 3
以下代码演示如何在switch语句中使用break。如果你要分别处理每个用例,则必须在每个用例中使用break;如果不使用break,则执行下一用例中的代码。
#include<iostream>
usingnamespacestd;
enumSuit{Diamonds,Hearts,Clubs,Spades};
intmain(){
Suithand;
...
//Assumethatsomeenumvalueissetforhand
//Inthisexample,eachcaseishandledseparately
switch(hand)
{
caseDiamonds:
cout<<"gotDiamonds\n";
break;
caseHearts:
cout<<"gotHearts\n";
break;
caseClubs:
cout<<"gotClubs\n";
break;
caseSpades:
cout<<"gotSpades\n";
break;
default:
cout<<"didn'tgetcard\n";
}
//Inthisexample,DiamondsandHeartsarehandledoneway,and
//Clubs,Spades,andthedefaultvaluearehandledanotherway
switch(hand)
{
caseDiamonds:
caseHearts:
cout<<"gotaredcard\n";
break;
caseClubs:
caseSpades:
default:
cout<<"didn'tgetaredcard\n";
}
}
continue语句
强制转移对最小封闭do、for或while循环的控制表达式的控制。
语法
continue;
备注
将不会执行当前迭代中的所有剩余语句。确定循环的下一次迭代,如下所示:
在do或while循环中,下一个迭代首先会重新计算do或while语句的控制表达式。
在for循环中(使用语法for(init-expr;cond-expr;loop-expr)),将执行loop-expr子句。然后,重新计算cond-expr子句,并根据结果确定该循环结束还是进行另一个迭代。
下面的示例演示了如何使用continue语句跳过代码部分并启动循环的下一个迭代。
//continue_statement.cpp
#include<stdio.h>
intmain()
{
inti=0;
do
{
i++;
printf_s("在继续之前\n");
continue;
printf("在继续之后,不被输出\n");
}while(i<3);
printf_s("在do循环之后\n");
}
输出:
在继续之前 在继续之前 在继续之前 在do循环之后