各位看官們,大家好,上一回中咱們說的是字符和字符串輸出函數的例子,這一回咱們說的例子是:break到哪裡 。閒話休提,言歸正轉。讓我們一起talk C栗子吧!
看官們,我們這一回的主題是break到哪裡,在介紹該主題前,我們先介紹一下break。break是C語言中的一個關鍵字,在其後面加上分號就構成break語句。啊!這就是一個語句?有看官表示吃驚。我要說的是:這確實是一個語句,break關鍵字總是這麼單槍匹馬地構成一條語句。雖然break關鍵字可以單槍匹馬地構成語句,不過break語句總是和循環語句或者switch語句出現在一起。就像金老爺《神雕俠侶》中的黑風雙煞,他們總是一起出現,而且讓人聞風喪膽。哈哈,看官們別害怕,我們這裡沒有黑風雙煞,我們只有和循環語句或者switch語句一起出現break語句。那麼回到我們的主題中來,break語句到底break到哪裡了?
要回答這個問題,我們需要把break語句和循環語句或者switch語句放在一起進行說明,因為它們總一起出現在程序中。循環語句或者switch語句,都有自己的作用域,也就是位於大括號范圍中的內容。在這兩種語句中使用break語句後就會跳出這兩種語句的的作用域。我們通過例子來說明,方便大家理解。
int index = 0; while(index < 5) { //do some thing printf("index = %d \n",index); index++; if(index == 3) { puts("break loop: while "); break; } } puts("hello");
在上面的例子中,while循環語句的作用域就是while語句本身和位於該語句下面大括號中的內容,在使用break語句後,就會跳出while語句的作用域,然後運行位於該作用域後的puts語句,此時它會在終端中輸出”hello”。我們在例子中使用的是while循環語句,對於for或者do/while循環語句也是同樣的原理,大家可以自己去分析並且動手試試,下面是程序的運行結果,請大家參考:
index = 0 index = 1 index = 2 break loop: while //index等於3時使用break語句跳出while循環 hello //運行while循環後的語句
我們介紹完break語句在循環語句中的例子,接下來舉一個break語句在switch語句中的例子,請大家參考:
index = 3; switch(index) { case 1: //do some thing puts("case 1 runing "); break; case 3: //do some thing puts("case 3 runing "); break; default: //do some thing puts("case default runing "); break; } puts("hello");
在上面的例子中,switch循環語句的作用域就是switch語句本身和位於該語句下面大括號中的內容,在使用break語句後,就會跳出switch語句的作用域,然後運行位於該作用域後的puts語句,此時它會在終端中輸出”hello”。下面是程序的運行結果,請大家參考:
case 3 runing //運行case 3中的內容,然後使用break跳出switch語句 hello //運行switch語句後的語句
介紹到這裡,我想大家已經明白了break語句break到哪裡,接下來我們驗證一下大家是不是真理解其中的含義,我們給大家演示一段代碼。
index = 0; while(index++ < 5) { printf("index = %d \n",index); switch(index) { case 1: //do some thing puts("case 1 running, break switch "); break; case 2: //do some thing puts("case 2 running, break switch "); break; default: //do some thing puts("default running, break switch "); break; } if(index == 3) { //do some thing puts("if/else breaking "); break; } else { //do some thing puts("if/else running "); } puts("loop: while running"); } puts("hello");
大家先閱讀一下該程序,然後自己動手寫出程序的運行結果。下面是程序的運行結果,大家和自己寫出的結果對比一下,是不是一樣呢?如果結果不一樣,那麼說明你沒有真正理解break語句break到哪裡。
index = 1 case 1 running, break switch //break語句只是break到switch作用域外, if/else running loop: while running //循環仍然在運行,說明break語句沒有break到while循環作用域外 index = 2 case 2 running, break switch if/else running loop: while running index = 3 default running, break switch if/else breaking //break語句break到while循環的作用域外 hello //運行while循環語句後的語句
結合上面的代碼和程序的運行結果,我們可以看到,前面的例子中只是單一的while語句或者switch語句,而此處的代碼中在
while循環中嵌套了switch語句,相比之下會復雜一些。代碼中在
switch語句中使用了break語句,該語句只是
break到了switch作用域外,然而
switch語句仍然在while循環語句的作用域中,因此,它不會
break到while循環語句外,這點在程序運行結果中體現為不斷地執行s
witch語句中的case,直到
index等於3時從if/else語句中的break跳出while循環的作用域。
通過這個例子,我們可以得出以下結論:break語句只能break到自身所在的使用域外,如果作用域有嵌套,那麼它不會break到嵌套區域外。這麼說可能比較抽象,我們做個簡單的圖示來說明:
{
//作用域A
{
//作用域B
break; //該break語句只能break到作用域B外,不會break到作用域A外;
}
break; //該break語句可以break到作用域A外;
}
看官們,我把本章回中的代碼收集整理成一個文件,該文件位於我的資源中,大家可以下載使用。
各位看官,關於break到哪裡的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。