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;
}

/* 《程式語言教學誌》的範例程式
   https://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;
}

/* 《程式語言教學誌》的範例程式
   https://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;
}

編譯器也接受這樣的寫法。

上一頁 5.1 - if 陳述
回 C++ 速查手冊首頁
下一頁 5.3 - switch 陳述
回 C++ 教材
回程式語言教材首頁