
else 如同英文字義,否則的意思,通常放在 if 的後面,若 if 的條件為真,就執行 if 底下大括弧圍起來的程式區塊,若為假,就執行 else 底下大括弧圍起來的程式區塊。
形式如下

這個概念用於二選一的情況,不是這樣就是那樣。舉例如下
| 001 | #include <iostream> |
| 002 | |
| 003 | int main() { |
| 004 | char a = 'h'; |
| 005 | char b = 'k'; |
| 006 | |
| 007 | if (a == b) { |
| 008 | std::cout << "Welcome to my world!" |
| 009 | << std::endl; |
| 010 | } |
| 011 | else { |
| 012 | std::cout << "How do you do?" |
| 013 | << std::endl; |
| 014 | } |
| 015 | |
| 016 | return 0; |
| 017 | } |
| 018 | |
| 019 | /* Kaiching Chang |
| 020 | u0502_1.cpp |
| 021 | 2014-02 */ |
編譯後執行,,結果如下
| $ g++ u0502_1.cpp |
| $ ./a.out |
| How do you do? |
| $ |
此例中,由於第 7 行
| 007 | if (a == b) { |
變數 a 不等於變數 b ,所以程式會跳去執行第 11 到 14 行的部份
| 011 | else { |
| 012 | std::cout << "How do you do?" |
| 013 | << std::endl; |
| 014 | } |
if-else 也可以是巢狀 (nested) 的使用,例如
| 001 | #include <iostream> |
| 002 | |
| 003 | int main() { |
| 004 | char a = 'h'; |
| 005 | char b = 'k'; |
| 006 | |
| 007 | if (a == 'a') { |
| 008 | std::cout << "Yes!" |
| 009 | << std::endl; |
| 010 | } |
| 011 | else { |
| 012 | if (a == b) { |
| 013 | std::cout << "No!" |
| 014 | << std::endl; |
| 015 | } |
| 016 | else { |
| 017 | std::cout << "What?" |
| 018 | << std::endl; |
| 019 | } |
| 020 | } |
| 021 | |
| 022 | return 0; |
| 023 | } |
| 024 | |
| 025 | /* Kaiching Chang |
| 026 | u0502_2.cpp |
| 027 | 2014-02 */ |
編譯後執行,結果如下
| $ g++ u0502_2.cpp |
| $ ./a.out |
| What? |
| $ |
所謂巢狀的 if-else 陳述就是在第 7 到 20 行的地方
| 007 | if (a == 'a') { |
| 008 | std::cout << "Yes!" |
| 009 | << std::endl; |
| 010 | } |
| 011 | else { |
| 012 | if (a == b) { |
| 013 | std::cout << "No!" |
| 014 | << std::endl; |
| 015 | } |
| 016 | else { |
| 017 | std::cout << "What?" |
| 018 | << std::endl; |
| 019 | } |
| 020 | } |
第 11 行的 else 後頭的大括弧內,另外使用一組 if-else 陳述,這個地方由於我們利用縮排 (indentation) 表現清楚原始程式碼的語意,看起來凹陷下去,看似好像巢一般,故稱為巢狀。巢狀的 if-else 經常出現在需要多重選擇判斷的的場合。
由於巢狀的 if-else 很常用,因此若改寫成
| 007 | if (a == 'a') { |
| 008 | std::cout << "Yes!" |
| 009 | << std::endl; |
| 010 | } |
| 011 | else if (a == b) { |
| 012 | std::cout << "No!" |
| 013 | << std::endl; |
| 014 | } |
| 015 | else { |
| 016 | std::cout << "What?" |
| 017 | << std::endl; |
| 018 | } |
編譯器也接受這樣的寫法。
continue ...
沒有留言:
張貼留言