C語言break和continue的語句用法

1.知識瞭解

在c語言中,為瞭使用循環控制更靈活,c語言允許在特定條件成立時使用break語句和continue語句控制循環的執行過程

  • ♞break:用於循環語句和switch語句中,它跳出所在的那一層循環語句或者switch語句。
  • ♞continue:用於循環語句中,他跳出所在的那一輪循環,繼續下一輪循環。

這是它們兩個的定義和使用邏輯,但是為瞭弄懂它們在具體的使用情況,我們可以把上述的定義全部拉滿,就可以瞭,嘿嘿!

♕循環語句:在c語言中,無非是三種循環語句,while循環,do…while循環,for循環。

那麼我們就每一個循環舉一個例子,就可以挖掘我們需要知道的東西啦。理論存在,例子來瞭!!!

2.for循環中break和continue語句的用法

輸出100~ 200能同時被3,5,和7整除的整數: ①

#include <stdio.h>
void main()
{	int n;
	for (n=100;n<=200;n++)
	{
		if(n%3!=0||n%5!=0||n%7!=0)
			continue;
		printf("%d\n",n );
	}
}

輸出結果

1

如果要是不用continue完成上述條件

#include <stdio.h>
void main()
{	int n;
	for (n=100;n<=200;n++)
	{
		if(n%3==0 && n%5==0 && n%7==0)

		printf("%d\n",n );
	}
}

運行結果與上面相同

但是如果加上break則發生瞭奇妙的化學反應

#include <stdio.h>
void main()
{	int n;
	for (n=100;n<=200;n++)
	{
		if(n%3==0 && n%5==0 && n%7==0)break;

		printf("%d\n",n );
	}
}

輸出結果:

2

所以在for循環裡面,第一個例子可以看出,continue一般接在if判斷語句的後面,用來控制循環變化。continue就像是門衛一樣,隻要你還滿足條件,就給我進去循環去,變成我不想要的樣子,在放你出去進行下面的語句,可能這麼說有點抽象,可以看下面的動態圖解

3

這裡就可以明白continue的存在就是不讓下面的語句動,隻有不滿足判斷語句才可以跳出來,執行下面的語句。一看就是個狠人呀!!!

對於③裡面的break可以看出是直接跳出循環,105滿足條件,沒問題,循環結束瞭,break的存在就像是一個固執的老頭,隻要滿足需求瞭,後面的人就不要瞭,我也不看瞭的感覺。

3.while循環continue語句的用法 ①

int i,n=0;
while(i<10)
{
    n++;
    if(i>5) continue;
    i++;
}
printf("i=%d,n=%d",i,n);

運行結果

4

上述代碼執行完成後是死循環,因為i=6時滿足if條件,執行continue語句,i的值仍為6,執行下一輪循環,滿足if條件,執行continue語句,i值仍為6,這樣就變成瞭死循環。

4.switch語句中break和continue語句的用法

你看到上面這個小標題一定會想我去,這個土豆哥有點瓦呀,switch語句中不能使用continue語句,儂曉得哇!!!

毋庸置疑,在switch case 語句中不能使用continue 關鍵字。continue語句的作用是跳出本次循環,轉入執行下一次循環。故而,continue語句隻能用於循環語句中,而switch case語句為多分支選擇語句,不是循環語句。

但是直到我看見瞭這個題目,改變瞭我的一些看法。

在這裡插入圖片描述

為瞭大傢方便驗證:(代碼如下)

#include <stdio.h>
int main(void)
{
	int k=0;char c='A';
	do
	{
		switch(c++)
		{
			case 'A':k++;break;
			case 'B':k --;
			case 'C':k+=2;break;
			case 'D':k=k%2;continue;
			case 'E':k=k*10;break;
			default:k=k/3;
		}
		k++;
	}while(c<'G');
	printf("k=%d\n",k );
	return 0;
}

運行結果

5

然後我又把continue語句刪除後的運行結果

#include <stdio.h>
int main(void)
{
	int k=0;char c='A';
	do
	{
		switch(c++)
		{
			case 'A':k++;break;
			case 'B':k --;
			case 'C':k+=2;break;
			case 'D':k=k%2;
			case 'E':k=k*10;break;
			default:k=k/3;
		}
		k++;
	}while(c<'G');
	printf("k=%d\n",k );
	return 0;
}

運行結果

6

然後我再把continue語句換成break語句的運行結果

#include <stdio.h>
int main(void)
{
	int k=0;char c='A';
	do
	{
		switch(c++)
		{
			case 'A':k++;break;
			case 'B':k --;
			case 'C':k+=2;break;
			case 'D':k=k%2;break;
			case 'E':k=k*10;break;
			default:k=k/3;
		}
		k++;
	}while(c<'G');
	printf("k=%d\n",k );
	return 0;
}

運行結果

在這裡插入圖片描述

可以看出continue語句在switch裡還是起到瞭一定的效果的。然後我們可以利用斷點的形式來實現知道每一步的值。(這裡大傢可以自己去試一試呀)然後呢,我把這個過程總結在下面的圖裡面瞭。

9

從上面的圖可以看出continue語句在switch中的用法還是跟他的原始定義一樣,跳到上面的循環,然後繼續執行。在本題中就是在c=D時不執行下面的k++,跳回上面的c++,然後呢,在執行c=E。感覺呢可以瞭解一下,雖然理論上來說continue不能用於switch裡面,但是這裡確實沒報錯呀。哈哈,看來矛盾確實是生活的一部分,要是大佬們有自己的看法歡迎在下面留言評論呀!!!

到此這篇關於C語言break和continue的精妙佈局的文章就介紹到這瞭,更多相關C語言break和continue內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀:

    None Found