循環裡Continue,Break,Return經常會用到,也是很容易出錯的一個坑,今天特地花個時間來總結下,在循環裡使用Continue,Break,Return的不同效果是什麼?
Continue 語句涵義C 語言中的 continue 語句有點像 break 語句,所不同的是,它不是強制終止,continue 會跳過當前循環中的代碼,強迫開始下一次循環迭代。
對於 for 循環,continue 語句執行後,自增語句仍然會執行。
對於 while 和 do...while 循環,continue 語句重新執行條件判斷語句。
語法流程圖實例多層 for 循環實例如下:
#include <stdio.h>
int main ()
{
int i=0,j=0;
for (i = 0; i < 4; i++ )
{
printf("i 的值: %d\n",i);
for (j = 0; j < 3; j++ )
{
if( j==1){
continue;
}
printf("j 的值: %d\n",j);
}
}
return 0;
}編譯結果如下,我們可以得出結論,在雙層FOR循環中,在內循環使用Continue,只會在內循環中跳過此處循環,小循環繼續執行,不會跳過大循環。
我們再舉一個while循環的例子如下:
#include <stdio.h>
int main ()
{
int a = 0;
do
{
if( a == 5)
{
/* 跳過迭代 */
a = a + 1;
continue;
}
printf("a 的值: %d\n", a);
a++;
}while( a < 10 );
return 0;
}輸出如下:
Break 語句在循環中,關鍵詞Break,作用是跳出循環,一般有以下兩種用法:
當 break 語句出現在一個循環內時,循環會立即終止,且程序流將繼續執行緊接著循環的下一條語句。
它可用於終止 switch 語句中的一個 case。
如果使用的是嵌套循環,break 語句會停止執行最內層的循環,然後開始執行該塊之後的下一行代碼。
注意:
break語句對if-else的條件語句不起作用。
由於它是用來退出循環或者switch語句的, 所以只有當它出現在這些語句的時候, 這種形式的break語句才是合法的。
語法流程圖實例如下:
#include <stdio.h>
int main ()
{
int i=0,j=0;
for (i = 0; i < 4; i++ )
{
printf("i 的值: %d\n",i);
for (j = 0; j < 3; j++ )
{
if( j==1){
break;
}
printf("j 的值: %d\n",j);
}
printf("\n");
}
return 0;
}編譯結果如下,我們可以看到在雙層FOR循環中,在內循環使用Break,只會在內循環中結束本次循環,小循環結束此次執行,不會跳過大循環。
我們再舉一個while循環的例子如下:
#include <stdio.h>
int main ()
{
int a = 0;
do
{
printf("a 的值:%d\n" , a );
a = a + 1;
if( a > 5)
{
// 終止循環
break;
}
}while( a < 10 );
return 0;
}輸出如下:
Return在循環中,Return語句,作用是結束本次循環,將函數調用棧彈棧,恢復現場。
說的簡單點兒就是結束當前的函數,返回函數執行結果,回到本函數被調用處繼續執行。
我們舉個例子如下:
#include <stdio.h>
int main ()
{
int i=0,j=0;
for (i = 0; i < 4; i++ )
{
printf("i 的值: %d\n",i);
for (j = 0; j < 3; j++ )
{
if( j==1){
return;
}
printf("j 的值: %d\n",j);
}
}
return 0;
}輸出如下:
提問思考?不知道大對上面的解釋有沒有理解清楚,這裡提出3個問題,如果一看即知道答案,那麼肯定沒有問題了。
同樣是跳出循環,return和break有什麼區別?
同樣是中斷執行,return和return false有什麼區別?
在什麼應用場景下我們會用到break或continue?