程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 一起talk C栗子吧(第一百八十回:C語言實例

一起talk C栗子吧(第一百八十回:C語言實例

編輯:關於C

各位看官們,大家好,上一回中咱們說的是字符和字符串輸出函數的例子,這一回咱們說的例子是: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循環語句外,這點在程序運行結果中體現為不斷地執行switch語句中的case,直到index等於3時從if/else語句中的break跳出while循環的作用域。

通過這個例子,我們可以得出以下結論:break語句只能break到自身所在的使用域外,如果作用域有嵌套,那麼它不會break到嵌套區域外。這麼說可能比較抽象,我們做個簡單的圖示來說明:

{
    //作用域A
    {
        //作用域B
        break;    //該break語句只能break到作用域B外,不會break到作用域A外;
    }

    break;       //該break語句可以break到作用域A外;
}

看官們,我把本章回中的代碼收集整理成一個文件,該文件位於我的資源中,大家可以下載使用。

各位看官,關於break到哪裡的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved