C++ 速查手冊

4.10 - 條件運算

條件運算子 (conditional operator) 是 C++ 裡唯一的三元運算子 (ternary operator) ?: ,需要三個運算元,三者均可為運算式,形式如下

expr1?expr2:expr3

若運算式 expr1 為真,運算結果會是運算式 expr2 計算出的值,若為假,運算結果則是運算式 expr3 計算出的值。

條件運算子通常利用在需要二選一的情況下,例如比較兩個整數取較大的值

#include <iostream>
  
int main() {
    int a = 22;
    int b = 34;
    
    std::cout << "a = " << a << std::endl;
    std::cout << "b = " << b << std::endl;
    std::cout << (a > b ? a : b) << " 比較大。" << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0410_1.cpp
   功能:示範 C++ 的條件運算
   作者:張凱慶*/

編譯後執行,結果如下

$ g++ u0410_1.cpp
$ ./a.out
a = 22
b = 34
34 比較大。
$

也可以利用在字串中依性別選字

#include <iostream>
  
int main() {
    int sex1 = 0;
    int sex2 = 1;
    
    std::cout << (sex1 ? "She" : "He") << " is here." << std::endl;
    std::cout << (sex2 ? "She" : "He") << " is running." << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0410_2.cpp
   功能:示範 C++ 的條件運算
   作者:張凱慶*/

編譯後執行,結果如下

$ g++ u0410_2.cpp
$ ./a.out
He is here.
She is running.
$

條件運算子有時可用來簡化 if-else 陳述,如以下程式

#include <iostream>
  
int main() {
    int a = 22;
    int b = 34;
    int max;
    
    if (a > b) {
        max = a;
    }
    else {
        max = b;
    }
    
    std::cout << "max = " << max << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0410_3.cpp
   功能:示範 C++ 的指派運算
   作者:張凱慶*/

if-else 的部份便可用以下來取代

max = (a > b) ? a : b;

相關教學影片

上一頁 4.9 - 指派運算
回 C++ 速查手冊首頁
下一頁 單元 5 - 控制結構
回 C++ 教材
回程式語言教材首頁