<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    C語言switch使用之詭異用法詳解

    • 發布:C++培訓
    • 來源:站長之家
    • 時間:2020-04-10 16:31

    關于switch的用法這里不再做什么總結了,其實這個是一個便捷的快速跳轉條件切換器。而關于這個功能最常用的技術討論點在于case后面的break以及default。這里不討論這些,直接看下面的代碼:

    #include"stdio.h"

    int main(void)

    {

    int num = 0;

    switch(num)

    {

    printf("functionrun!\n");

    }

    return 0;

    }

    上面的代碼中用到了一個switch,但是代碼塊中沒有任何case以及default。代碼語法有問題嗎?

    編譯一下如下:

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>gcc switch.c

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>

    由上面的結果可以看到,編譯沒有任何問題。那么運行會是什么狀態呢?會把這個唯一的printf執行輸出相應的語句?

    運行如下:

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>a

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>

    如此看,就有點詭異了。這個printf語句是沒有執行到的!也就是說,switch語句中的代碼執行必須得有case標簽指示代碼的入口。這種行為很讓人聯想到一種情況的程序執行結果,代碼如下:

    #include"stdio.h"

    int main(void)

    {

    int num = 0;

    switch(num)

    {

    int i = 123;

    printf("functionrun!\n");

    default:

    printf("value of iis:%d\n",i);

    break;

    }

    return 0;

    }

    代碼是在之前的代碼中修改的,代碼的第二個printf會執行,可是執行的時候i的數值是多少呢?從之前的測試可以看出,局部變量后面的代碼是沒有執行過的,那么我這個i在每次函數執行到這里的時候會每次動態性初始化嗎?

    代碼編譯運行結果:

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>gcc switch.c

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>a value of i is:2

    E:\WorkSpace\02_技術實踐\01_編程語言\01_C語言\02_C和指針\switch>

    從上面的結果可以得出兩個結論:

    1,代碼塊中的聲明定義是起作用的;

    2,i的數值不是123證明這部分的局部變量并沒有進行每次的動態初始化。

    說起來這也是夠奇怪的一個特點,印象中之前看《C專家編程》的時候似乎看到過一個類似的描述,但是那時候C語言的水平看《C專家編程》一點也看不懂。只是留下了一個模模糊糊的印象,至于是否是一個問題,有空還是得會去查查。

    免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯系刪除

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:C++中this指針的用法詳解
    下一篇:c#實現圖片的平移和旋轉示例代碼

    超全的C語言標識符知識

    C指針——指針類型轉換

    C指針——指針和結構類型的關系

    C指針——數組和指針的關系

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>