首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言 if 語句完全指南:三大形式、嵌套陷阱與最佳實踐

     編輯:關於C語言

if 是 C 語言構建分支結構的核心語句,提供三種基本形式,支援從簡單二選一到複雜多路分派。本文系統整理語法、語意、嵌套規則與工程實踐建議。

三大基本形式

1. 基本 if(單分支)

if (expr) stmt;
  • expr 非 0 → 執行 stmt。
  • 為 0 → 跳過。

if流程圖

範例 5-3:求兩數最大值

max = a;
if (max < b) max = b;

2. if-else(雙分支)

if (expr) stmt1; else stmt2;
  • 互斥執行:真走 stmt1,假走 stmt2。

if-else流程圖

範例 5-4:輸出最大值

if (a > b) printf("%d", a);
else printf("%d", b);

3. if-else-if 鏈(多分支)

if (expr1) stmt1;
else if (expr2) stmt2;
else if (expr3) stmt3;
...
else stmt_n;
  • 由上而下檢查,首個為真執行對應語句,其餘跳過。
  • 所有條件皆假則執行最終 else。

if-else-if流程圖

範例 5-5:字符分類

if (c < 32) printf("控制字符\n");
else if (c >= '0' && c <= '9') printf("數字\n");
else if (c >= 'A' && c <= 'Z') printf("大寫字母\n");
else if (c >= 'a' && c <= 'z') printf("小寫字母\n");
else printf("其他字符\n");

四大使用細節

1. 條件表達式可為任意標量

if (a = 5) ...      // 永真,賦值結果 5 非零
if (b) ...          // 變數本身作條件,非零即真
if (a = b) ...      // 賦值後以結果判斷,常用於「賦值並檢查」

2. 條件必加括號,語句以分號結尾

if (a > b) printf("%d", a);  // 正確
if a > b printf(...);         // 錯誤:缺括號

3. 多語句必須用大括號組成複合語句

if (a > b) {
    a++;
    b++;
} else {
    a = 0;
    b = 10;
}  // } 後不加分號

4. else 配對規則:最近的未配對 if

if (expr1)
    if (expr2) stmt1;
else stmt2;  // else 配對內層 if(expr2)

若欲配對外層,必須加大括號:

if (expr1) {
    if (expr2) stmt1;
} else stmt2;  // else 配對外層 if(expr1)

if 嵌套與替代方案

範例 5-6:嵌套比較兩數

if (a != b)
    if (a > b) printf("A>B\n");
    else printf("A<B\n");
else printf("A=B\n");

範例 5-7:改用 if-else-if(推薦)

if (a == b) printf("A=B\n");
else if (a > b) printf("A>B\n");
else printf("A<B\n");

扁平結構更易讀,避免 else 配對歧義。

工程最佳實踐

原則說明
淺層優於深層嵌套超過 3 層即重構為 if-else-if 或函式
衛語句提前返回錯誤情況先 return,主流程不縮排
布林變數命名肯定語意if (isValid) 優於 if (!invalid)
複雜條件提煉函式if (isLeapYear(year)) 代替 inline 邏輯
switch 替代長鏈整數定值分支用 switch,O(1) 跳轉表更快

總結

if 三大形式覆蓋所有分支需求。牢記大括號包多語句、else 配最近 if、扁平化優於嵌套三大鐵律,能寫出結構清晰、邏輯正確的分支代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved