C++ 速查手冊
5.2 - else 陳述
else 如同英文字義,否則的意思,通常放在 if 的後面,若 if 的條件為真,就執行 if 底下大括弧圍起來的程式區塊,若為假,就執行 else 底下大括弧圍起來的程式區塊。
形式如下
這個概念用於二選一的情況,不是這樣就是那樣。舉例如下
#include <iostream>
int main() {
char a = 'h';
char b = 'k';
if (a == b) {
std::cout << "Welcome to my world!" << std::endl;
}
else {
std::cout << "How do you do?"<< std::endl;
}
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0502_1.cpp
功能:示範 C++ 的 else 陳述
作者:張凱慶*/
編譯後執行,,結果如下
$ g++ u0502_1.cpp |
$ ./a.out |
How do you do? |
$ |
此例中,由於第 7 行
if (a == b) {
變數 a 不等於變數 b ,所以程式會跳去執行第 10 到 12 行的部份
else {
std::cout << "How do you do?"<< std::endl;
}
if-else 也可以是巢狀 (nested) 的使用,例如
#include <iostream>
int main() {
char a = 'h';
char b = 'k';
if (a == 'a') {
std::cout << "Yes!" << std::endl;
}
else {
if (a == b) {
std::cout << "No!" << std::endl;
}
else {
std::cout << "What?" << std::endl;
}
}
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0502_2.cpp
功能:示範 C++ 的 else 陳述
作者:張凱慶*/
編譯後執行,結果如下
$ g++ u0502_2.cpp |
$ ./a.out |
What? |
$ |
所謂巢狀的 if-else 陳述就是在第 11 到 16 行的地方
if (a == b) {
std::cout << "No!" << std::endl;
}
else {
std::cout << "What?" << std::endl;
}
第 11 行的 else 後頭的大括弧內,另外使用一組 if-else 陳述,這個地方由於我們利用縮排 (indentation) 表現清楚原始程式碼的語意,看起來凹陷下去,看似好像巢一般,故稱為巢狀。巢狀的 if-else 經常出現在需要多重選擇判斷的的場合。
由於巢狀的 if-else 很常用,因此若改寫成
if (a == 'a') {
std::cout << "Yes!" << std::endl;
}
else if (a == b) {
std::cout << "No!" << std::endl;
}
else {
std::cout << "What?" << std::endl;
}
編譯器也接受這樣的寫法。
相關教學影片