关系运算、条件运算


数学上有比较运算,像是大于、等于、小于等,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'


展开阅读全文