一文讀懂C++ if-else條件語句:邏輯判斷基礎

在編程中,我們經常需要根據不同的情況執行不同的操作。比如“如果下雨就帶傘,否則不帶”,這種“根據條件做選擇”的邏輯,在C++中就通過 if-else條件語句 實現。它是程序控制流的基礎,讓代碼能夠根據判斷結果靈活執行不同分支。

爲什麼需要條件語句?

想象一下,如果沒有條件判斷,程序只能按順序執行固定代碼。比如判斷一個數是正數還是負數,沒有條件語句的話,代碼只能寫死兩種情況,無法根據輸入動態變化。而條件語句能讓程序“聰明”起來,根據不同條件執行不同邏輯。

一、if-else基本語法

最基礎的if-else結構用於處理“二選一”的情況,語法如下:

if (條件) {
    // 條件爲真時執行的代碼塊
} else {
    // 條件爲假時執行的代碼塊
}

關鍵點:

  1. 條件:必須是一個結果爲“真(true)”或“假(false)”的表達式(比如 a > 5score >= 60 等)。
  2. 代碼塊:大括號 {} 內的內容是“要執行的代碼”,如果只有一條語句,大括號可以省略,但建議始終加上(避免縮進錯誤)。
  3. 執行邏輯:如果條件爲真,執行 if 後的代碼塊;否則執行 else 後的代碼塊。

示例1:判斷一個數是否爲正數

#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "請輸入一個整數:";
    cin >> num;  // 從鍵盤讀入一個整數

    if (num > 0) {  // 條件:num是否大於0?
        cout << num << "是正數。" << endl;
    } else {  // 如果條件不滿足(num <= 0)
        cout << num << "不是正數(可能是0或負數)。" << endl;
    }

    return 0;
}

運行結果
輸入 5 → 輸出 5是正數。
輸入 -3 → 輸出 -3不是正數(可能是0或負數)。

二、多分支判斷:else if

當需要判斷 多個條件 時(比如成績等級、數字範圍),可以用 else if 擴展分支,避免嵌套多層if。

語法:

if (條件1) {
    // 條件1成立時執行
} else if (條件2) {
    // 條件1不成立,條件2成立時執行
} else if (條件3) {
    // 條件1、2不成立,條件3成立時執行
} else {
    // 所有條件都不成立時執行(可選)
}

關鍵點:

  • else if 必須緊跟在 if 或上一個 else if 後面,不能單獨出現。
  • 條件從上到下依次判斷,一旦某個條件成立,後續條件不再執行(短路效應)。

示例2:判斷成績等級

#include <iostream>
using namespace std;

int main() {
    int score;
    cout << "請輸入成績(0-100):";
    cin >> score;

    if (score >= 90) {
        cout << "等級:A" << endl;
    } else if (score >= 80) {
        cout << "等級:B" << endl;
    } else if (score >= 60) {
        cout << "等級:C" << endl;
    } else {
        cout << "等級:D(不及格)" << endl;
    }

    return 0;
}

運行結果
輸入 85 → 輸出 等級:B
輸入 55 → 輸出 等級:D(不及格)

注意:如果條件順序錯誤(比如先判斷 score >= 60,再判斷 score >= 80),會導致結果錯誤!例如:score=85 會被 >=60 直接判斷爲C,所以必須按“從高到低”排列條件。

三、嵌套if-else:複雜條件判斷

如果需要在一個條件分支裏再嵌套另一個條件判斷,可以用 嵌套if-else。比如“判斷一個數是否是正偶數”:

#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "請輸入一個整數:";
    cin >> num;

    if (num > 0) {  // 外層條件:是否爲正數
        if (num % 2 == 0) {  // 內層條件:是否爲偶數(%是取餘運算符,餘數爲0則是偶數)
            cout << num << "是正偶數。" << endl;
        } else {
            cout << num << "是正奇數。" << endl;
        }
    } else {
        cout << num << "不是正數(可能是0或負數)。" << endl;
    }

    return 0;
}

運行結果
輸入 7 → 輸出 7是正奇數。
輸入 -4 → 輸出 -4不是正數(可能是0或負數)。

四、常見問題與注意事項

  1. 條件表達式必須是bool類型
    C++中,條件表達式的結果只能是 truefalse。例如:
    - 正確:if (num > 0)(結果爲bool)
    - 錯誤:if (num)(雖然等價於 num != 0,但容易混淆,建議直接寫 num > 0

  2. 避免“賦值”代替“比較”
    不要用 = 代替 ==!例如:
    - 錯誤:if (num = 5)(把5賦值給num,條件恆爲true)
    - 正確:if (num == 5)(判斷num是否等於5)

  3. else的“就近原則”
    如果省略大括號,else會默認屬於離它最近的if。例如:

   if (a > 5)
       if (b > 3)
           cout << "A";
   else
       cout << "B";  // 這裏的else屬於第二個if,而非第一個!

這種寫法容易出錯,建議始終用大括號明確範圍

  1. 多條件判斷時,條件順序決定結果
    例如判斷“分數是否≥90”和“分數是否≥80”,必須先判斷範圍更大的條件(≥90),再判斷範圍小的(≥80),否則會被“短路”。

五、總結

if-else是C++中最基礎的邏輯判斷工具,核心是“根據條件執行不同分支”。掌握它需要:
- 理解基本語法:if(條件){...} else {...}else if 多分支。
- 注意條件順序和表達式類型,避免賦值錯誤。
- 熟練使用嵌套結構處理複雜邏輯。

通過多練習簡單例子(如判斷奇偶、成績等級、溫度分類),就能快速掌握條件語句的使用,爲後續學習循環、函數等打下基礎。

小夜