1. 程式人生 > >C++ 轉向語句:break continue goto return

C++ 轉向語句:break continue goto return

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章 函式。