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循环之后