關係運算、條件運算


數學上有比較運算,像是大於、等於、小於等,C++ 也提供了這些運算子,稱為關係運算子(Relational operator)或比較運算子(Comparison operator),它們有大於(>)、不小於(>=)、小於(<)、不大於(<=)、等於 (==)以及不等於(!=)。

請看看下面這幾行會顯示哪些數值:

cout << "10 > 5\t\t"  << (10 > 5)  << endl;
cout << "10 >= 5\t\t" << (10 >= 5) << endl;
cout << "10 < 5\t\t"  << (10 < 5)  << endl;
cout << "10 <= 5\t\t" << (10 <= 5) << endl;
cout << "10 == 5\t\t" << (10 == 5) << endl;
cout << "10 != 5\t\t" << (10 != 5) << endl;

程式的執行會顯示 0 或 1,分別表示不成立或成立,如下所示:

10 > 5          1
10 >= 5         1
10 < 5          0
10 <= 5         0
10 == 5         0
10 != 5         1

在 C++ 中,所有非零的數值在作為條件式時都被視為 true

C++ 條件運算子(Conditional operator)使用方式如下:

條件式 ? 成立傳回值 : 失敗傳回值

條件運算子的傳回值依條件式的結果而定,如果條件式的結果為 true,傳回冒號前的值,若為 false,傳回冒號後的值,下面這個程式可以作為簡單示範:

#include <iostream>
using namespace std;

int main() { 
    int score = 0; 

    cout << "輸入學生分數:"; 
    cin >> score; 
    cout << "該生是否及格?" 
         << (score >= 60 ? 'Y' : 'N') 
         << endl; 

    return 0;
} 

執行結果:

輸入學生分數:60
該生是否及格?Y

這個程式會依輸入的分數,判斷學生成績是否不小於 60 分,以決定其是否及格,如果是傳回字元 'Y',否傳回字元 'N',下面這個程式可以判斷使用者輸入是否為奇數:

#include <iostream>
using namespace std;

int main() { 
    int input = 0; 

    cout << "輸入整數:"; 
    cin >> input; 
    cout << "該數為奇數?" 
         << (input % 2 ? 'Y' : 'N') 
         << endl;

    return 0;
}

執行結果:

輸入整數:3
該數為奇數?Y

在 C++ 中非零數值都可以表示 true,而 0 表示 false,當輸入數為奇數時,就不能被 2 整除,餘數一定不是 0,在條件式中表示 true, 因而傳回字元 'Y',若數值為偶數,可被 2 整除,餘數為 0,在條件式中表示 false,所以傳回字元 'N'