中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C之分支語句(六)

發布時間:2020-06-11 14:40:20 來源:網絡 閱讀:786 作者:上帝之子521 欄目:編程語言

        我們在日常生活中難免會遇到要做選擇的情況,那么在 C 語言中也有做選擇的情況。在這種情況下,我們的代碼又該怎樣寫呢?這時就可以用到我們的分支語句了。  總體來說,我們在 C 語言中可以經常看到兩種分支語句:第一種 if 分支語句,第二章就是 switch 分支語句了。我們先來介紹第一種分支語句,if 分支語句。

        if 語句用于根據條件選擇執行的語句,那么這時對應的 else 不能獨立存在且總是與它最近的 if 相匹配,else 語句后可以接連其他 if 語句,用法如下:

C之分支語句(六)

        那么在 if 語句中做零值比較的話,我們得注意幾點問題:1、bool 型變量應該直接出現于條件中,不要進行比較;2、變量和 0 值進行比較時,0 值應該出現在比較符號左邊;3、float 型變量不能直接進行 0 值比較,需要定義精度。因為我們知道 float 型變量是不精確的,所以不能直接進行比較。為了更加形象的說明,我們總結如下:

C之分支語句(六)

        下來我們做個示例對 if 語句進行說明,代碼如下:

#include <stdio.h>

void f1(int i)
{
    if( i < 6 )
    {
        printf("Failed!\n");
    }
    else if( (6 <= i) && (i <= 8) )
    {
        printf("Good!\n");
    }
    else
    {
        printf("Perfect!\n");
    }
}

void f2(char i)
{
    if( 'c' == i )
    {
        printf("Compile\n");
    }
    else if( 'd' == i )
    {
        printf("Debug\n");
    }
    else if( 'o' == i )
    {
        printf("Object\n");
    }
    else if( 'r' == i )
    {
        printf("Run\n");
    }
    else
    {
        printf("Unknown\n");
    }
}

int main()
{
    f1(5);        // Failed!
    f1(7);        // Good!
    f1(9);        // Perfect!
    
    f2('o');      // Object
    f2('d');      // Debug
    f2('e');      // Unknown
       
    return 0;
}

        根絕我們之前的分析,打印出來的結果應該和我們分析的一樣,我們編譯運行下,得到結果如下:

C之分支語句(六)

        那么我們看到打印的結果和我們分析的是一致的,那么大家可能對 f2(char i) 函數有疑問,里面為什么要寫成 'c' == i 呢?在這塊我們要寫成 i == 'c' 的話也沒有錯,我們編譯運行下結果也是對的。那么為什么要那樣寫呢?根據我們的工程經驗來說,一般新手在寫 == 時有時會寫成 =。如果我們是這樣寫 'c' = i 的話,編譯的時候就直接報錯,那么我們在這時便會很快定位出問題。但是我們要寫成 i = 'c',編譯照樣還是通過的,但結果就不對了。對于新手來說,錯誤很難排查。我們分別編譯下兩種情況,看看輸出的是什么?圖一是 'c' = i 這種情況,圖二是 i = 'c' 這種情況。

C之分支語句(六)

                                                                圖一

C之分支語句(六)

                                            圖二


        那么我們可以看到第二種情況下,編譯可以通過,但結果是錯的,為什么會輸出那樣的結果呢?我們再來分析下源代碼,無論你輸進去的是什么字母,if( i = 'c' ) 這句代碼一直為真,因為它是賦值。所以就一直會打印出 Compile,這樣的錯誤對于我們新手來說是不容易排查的。所以建議大家以后寫 這種代碼時還是遵照規范的格式來寫,以最大程度避免錯誤。

        接下來我們再來講講 switch 分支語句。switch 語句對應單個條件分值的情形;case 語句分支必須要有 break,否則會導致分支重疊;default 語句有必要加上,用以處理特殊情況。我們用如下圖來表示關系:

C之分支語句(六)

        那么在 case 語句中的值只能是×××或字符型;case 語句的排列是由順序的:1、按字母或數字順序排列各條語句;2、正常情況放在前面,異常情況放在后面;3、default 語句只用于處理真正的默認情況。

        那么我們在學習了兩種選擇語句之后,我們可以用 switch 語句對前面我們寫的 if 語句進行改寫,f1(int i) 和 f2(char i)代碼如下:

void f1(int i)
{
    switch( i < 6 )
    {
        case 1:
            printf("Failed!\n");
            break;
        default:
            switch( (6 <= i) && (i <= 8) )
            {
                case 1:
                    printf("Good!\n");
                    break;
                default:
                    printf("Perfect!\n");
                    break;
            }
    }
}

void f2(char i)
{
    switch( i )
    {
        case 'c':
            printf("Compile\n");
            break;
        case 'd':
            printf("Debug\n");
            break;
        case 'o':
            printf("Object\n");
            break;
        case 'r':
            printf("Run\n");
            break;
        default:
            printf("Unknown\n");
            break;
    }
}

        我們再次進行編譯,得到結果如下:

C之分支語句(六)

        我們自己對比前后兩次代碼,那種寫法更加合適,就需要我們自己來選擇了。C 語言之所以有提供兩種選擇語句,就是為了我們用戶的自主選擇性,在合適的地方用合適的代碼。我們可以看到,兩種代碼都是可以互換的。也就是說同樣的功能用 if 語句和 switch 語句都可以實現,這就需要我們自己來選擇用哪種方法了。

        我們今天學習了 if 語句和 switch 語句,總結如下:1、if 語句適用于復雜邏輯進行判斷的情形中;2、switch 語句適用于對離散值進行判斷的情形中;3、if 語句和 switch 語句在功能上可以互換;4、if 語句對于“按片”分支判斷的情形更加簡潔;5、switch 語句對于多分支判斷的情形更加簡潔。后面我們會繼續對 C 語言的學習。


         歡迎大家一起來學習 C 語言,可以加我QQ:243343083


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

望都县| 濉溪县| 浦城县| 马关县| 宾阳县| 互助| 山丹县| 云浮市| 凤山县| 余干县| 临海市| 青海省| 石城县| 永寿县| 托克托县| 广河县| 林甸县| 鄢陵县| 吴旗县| 莲花县| 哈密市| 苗栗县| 中卫市| 阳城县| 湾仔区| 聂荣县| 夏河县| 惠来县| 郑州市| 淮南市| 顺平县| 嵩明县| 吉水县| 丹东市| 卓尼县| 平舆县| 馆陶县| 稻城县| 涟水县| 塔城市| 茌平县|