1. 程式人生 > >C語言進階剖析 06 分支語句

C語言進階剖析 06 分支語句

if 語句分析

  • if 語句用於根據條件選擇執行語句
  • else 不能獨立存在且總是與它最近的 if 相匹配
  • else 語句後可以直接連線其它 if 語句
    在這裡插入圖片描述
  • if 語句中零值比較的注意點
        ○ bool 型變數應該直接出現在條件中,不要進行比較
        ○ 變數和 0(立即數) 值比較時, 0 應該出現在比較符號左邊
        ○ float 型變數不能直接進行 0 值比較,需要定義精度
void code_1()
{
    bool b = true;
    
    if( b )
    {
        // statement 1
    }
    else
    {
        // statement 2
    }
}
        
void code_2()
{
    int i = 0;
    
    if( 0 == i )
    {
        // statement 1
    }
    else
    {
        // statement 2
    }
}
        
#define EPSINON (0.00000000001)
void code_3()
{
    float f = 0.0f;
    
    if( (-EPSINON <= f) && (f <= EPSINON) )
    {
        // statement 1
    }
    else
    {
        // statement 2
    }
}

switch 語句分析

  • switch 語句對應單個條件多個分支的情形
  • case 語句分支必須要有break,否則會導致分支重疊
  • default語句有必要加上,以處理特殊情況
    在這裡插入圖片描述
void code_4()
{
    case CONST_1 :
        // code block
    break;
    
    case CONST_2:
        // code block
    break;
    
    default:
        // code block
    break;
} 
  • case 語句中的值只能是"整形或字元型"
  • case 語句的排列順序
        ○ 按字母或數字順序排列各條語句
        ○ 正常情況放在前面,異常情況放在後面
        ○ default 語句只能用於處理真正的預設情況

例項分析: if 和 switch

#include <stdio.h>

void f1(int i)
{
    if( i < 6 )
    {
        printf("Failed!\n");
    }
    else if( (6 <= i) && (i <= 8) )
    {
        printf("Good!\n");
    }
    else 
    {
        printf("Prefect\n");
    }
}
    
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;
    }
}

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

小結

  • if 語句適用於複雜邏輯進行判斷的情形中
  • switch 語句適用於對離散值進行判斷的情形中
  • if 語句和 switch 語句在功能上進行相互替換
  • if 語句對於 “按片” 分支判斷的情形更加簡潔
  • switch 語句對於 “多分支” 判斷的情形更為簡潔

補充 : switch 具有更高的執行效率,直接命中分支,避免依次的比較過程

內容參考狄泰軟體學院系列課程,如有侵權,請聯絡作者刪除!感謝~