在編程中,我們經常需要根據不同的情況執行不同的操作。比如“如果下雨就帶傘,否則不帶”,這種“根據條件做選擇”的邏輯,在C++中就通過 if-else條件語句 實現。它是程序控制流的基礎,讓代碼能夠根據判斷結果靈活執行不同分支。
爲什麼需要條件語句?¶
想象一下,如果沒有條件判斷,程序只能按順序執行固定代碼。比如判斷一個數是正數還是負數,沒有條件語句的話,代碼只能寫死兩種情況,無法根據輸入動態變化。而條件語句能讓程序“聰明”起來,根據不同條件執行不同邏輯。
一、if-else基本語法¶
最基礎的if-else結構用於處理“二選一”的情況,語法如下:
if (條件) {
// 條件爲真時執行的代碼塊
} else {
// 條件爲假時執行的代碼塊
}
關鍵點:¶
- 條件:必須是一個結果爲“真(true)”或“假(false)”的表達式(比如
a > 5、score >= 60等)。 - 代碼塊:大括號
{}內的內容是“要執行的代碼”,如果只有一條語句,大括號可以省略,但建議始終加上(避免縮進錯誤)。 - 執行邏輯:如果條件爲真,執行
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或負數)。
四、常見問題與注意事項¶
-
條件表達式必須是bool類型
C++中,條件表達式的結果只能是true或false。例如:
- 正確:if (num > 0)(結果爲bool)
- 錯誤:if (num)(雖然等價於num != 0,但容易混淆,建議直接寫num > 0) -
避免“賦值”代替“比較”
不要用=代替==!例如:
- 錯誤:if (num = 5)(把5賦值給num,條件恆爲true)
- 正確:if (num == 5)(判斷num是否等於5) -
else的“就近原則”
如果省略大括號,else會默認屬於離它最近的if。例如:
if (a > 5)
if (b > 3)
cout << "A";
else
cout << "B"; // 這裏的else屬於第二個if,而非第一個!
這種寫法容易出錯,建議始終用大括號明確範圍。
- 多條件判斷時,條件順序決定結果
例如判斷“分數是否≥90”和“分數是否≥80”,必須先判斷範圍更大的條件(≥90),再判斷範圍小的(≥80),否則會被“短路”。
五、總結¶
if-else是C++中最基礎的邏輯判斷工具,核心是“根據條件執行不同分支”。掌握它需要:
- 理解基本語法:if(條件){...} else {...} 和 else if 多分支。
- 注意條件順序和表達式類型,避免賦值錯誤。
- 熟練使用嵌套結構處理複雜邏輯。
通過多練習簡單例子(如判斷奇偶、成績等級、溫度分類),就能快速掌握條件語句的使用,爲後續學習循環、函數等打下基礎。