C++ 快速導覽 - 條件運算

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




若運算式 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://pydoing.blogspot.com/
    檔名:con1.cpp
    功能:示範條件運算
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



也可以利用在字串中依性別選字
#include <iostream>
 
int main()
{
    int sex1 = 0;
    int sex2 = 1;
    
    std::cout << (sex1 ? "她" : "他") << "坐在公園的長椅上。" << std::endl;
    std::cout << (sex2 ? "她" : "他") << "跑了過來...." << std::endl;

    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:con2.cpp
    功能:示範條件運算
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



條件運算子有時可用來簡化 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://pydoing.blogspot.com/
    檔名:con3.cpp
    功能:示範條件運算
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



其中 9 到 14 行,便可用以下
max = (a > b) ? a : b;


來取代。


中英文術語對照
條件運算子conditional operator
三元運算子ternary operator
運算式expression


您可以繼續參考
運算式
型態轉換


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...


本文於 2013 年 1 月更新

沒有留言: