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 ...
沒有留言:
張貼留言