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