C++ 转向语句:break continue goto return

时间:2022-01-23 20:31:01

VC++提供break语句、continue语句、goto语句和return语句等若干转向语句,用于改变程序原来的执行顺序。

break语句

位置:只能用在switch语句和循环语句中。

作用:跳出switch语句或提前终止循环,转去执行switch语句或循环语句之后的语句。

应用:多用于提前结束循环(包括省略形式的for循环),以避免死循环。

例如:
    for (i=10; i<20; i++){
      if (i % 3==0)     break;
      cout<<i<<′/t′;
    } //循环语句1

【分析】:当if语句的条件表达式为真,即i能被3整除时,便由break退出循环,不再输出。
【结果】:程序段执行后输出: 10 11

又如:
    for(; ;){
        …
        if(<表达式>)     break;
    … } //循环语句2
【分析】:当if语句的条件表达式为真时,由break退出,结束了本来的死循环。
 
举例:【例2.18】 给定正整数m,判定其是否为素数。(查看动画演示)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int m,i,k;
    cout<<"输入大于1的正整数m:"<<endl;
    cin>>m;
    if(m==2)   cout<<m<<"是素数"<<endl;
    else{
        k=sqrt(m);
        for(i=2;i<=k;i++) if (m%i==0)  break;  //只要有一个整除,就可停止
        if(i>k)  cout<< m<<"是素数"<<endl;  //循环提前终止表示是非素数
        else  cout<< m<<"不是素数"<<endl;
    }
    return 0;
}

注意:在嵌套循环中,break语句终止的是其所在的循环语句,而并非终止所有的循环。例如:
    for (; {
        for (; {
            …
            … break;   //当程序执行到break语句时,终止内层循环,接着执行语句1。
            …
        }
        语句1;
        …
    }

continue语句

位置:只能用在循环语句中。

作用:终止本次循环,即跳过其后尚未执行的循环体语句,并开始下一次循环。

区别:与break语句的区别是:continue语句结束本次循环,而break语句是结束整个循环

举例:将循环语句1中的break换成continue,代码和结果如下:
    for (i=10; i<20; i++) {
        if (i % 3==0)     continue;
        cout<<i<<′/t′;
    }
【分析】:当if语句的条件表达式为真,即i能被3整除时,便由continue结束当前循环,不输出,开始下一次循环。

【结果】:程序段执行后输出:  10 11 13 14 16 17 19

注意:continue语句执行后的下一次循环是否执行,仍然取决于循环条件的判断。

goto语句

作用:goto语句和标号语句一起使用,控制程序从goto语句所在的地方转移到标号语句处。所谓“标号语句”,是用标识符标识的语句。

应用:在某些特定场合下,比如在多层循环嵌套中,要从深层循环跳出,若用break语句,不仅要使用多次,而且可读性较差,这时goto语句可以发挥作用。

注意:大多数情况下,goto语句容易导致程序结构混乱,可读性降低。而且,它所完成的功能完全可以用算法的三种基本结构实现,因此,一般不提倡使用goto语句。

return语句

return语句用在函数中,详细内容见第3章 函数。