2.18 break 和 continue 语句
break和continue语句改变控制流程。break语句在while、for、do/while或switch结构中执行时,使得程序立即退出这些结构,从而执行该结构后面的第一条语句。break语句常用于提前从循环退出或跳过switch结构的其余部分(如图2.22)。图2.26演示了for重复结构中的break语句,if结构发现x变为5时执行break,从而终止for语句,程序继续执行for结构后面的cout语句。循环只执行四次。
注意这个程序中控制变量x在for结构首部之外定义。这是因为我们要在循环体中和循环执行完毕之后使用这个控制变量。
continue语句在while、for或do/while结构中执行时跳过该结构体的其余语句,进入下一轮循环。在while和do/while结构中,循环条件测试在执行continue语句之后立即求值。在for结构中,执行递增表达式,然后进行循环条件测试。前面曾介绍过.while结构可以在大多数情况下取代for结构。但如果while结构中的递增表达式在continue语句之后,则会出现例外。这时,在测试循环条件之前没有执行递增,并且while与for的执行方式是不同的。图2.27在for结构中用continue语句跳过该结构的输出语句,进入下一轮循环。
// Fig.2.26:fig02 26.cpp // Usinq the break statement in a for structure #include<~ostream.h> int main(){ // x declared here so it can be used after the loop int x; for ( x = 1; x <= 10; x++ ) { if { x == 5 ) break; // break loop only if x is 5 cout << x <<" "; } cout << "\nBroke out of loop at x of" << x << endl; return O; } }
输出结果:
1 2 3 4 Broke out of loop at x of 5
图2.26 for重复结构中的break语句
// Fig. 2.27: figO2_OT.cpp // Using the continue statement in a for structure #include int main(){ for ( iht x = 1; x <- 10; x++ ){ if (x==5){ continue; // skip remaining code in loop // only if x is 5 cout << x <<" "; } cout << "\nUsed continue to skip printing the value 5" << endl; return O; } }
输出
1 2 3 4 5 6 7 9 9 10 USed continue to skip printing the value 5
图 2.27 在for结构用continue语句
编程技巧2.30
有些程序员认为break和continue会破坏结构化编程。由于这些语句可以通过后面要介绍的结构化编程方法实现,因此这些程序员不用break和continue。
性能提示 2.9
正确使用break和continue语句能比后面要介绍的通过结构化编程方法的实现速度更快。
软件工程视点2.10
达到高质量软件工程与实现最佳性能软件之间有一定冲突。通常,要达到一个目标,就要牺牲另一个目标。