0
点赞
收藏
分享

微信扫一扫

C++PrimerPlus 第六章 分支语句和逻辑运算符 - 6.4 ?:运算符

唯米天空 2022-04-17 阅读 81

C++PrimerPlus 第六章 分支语句和逻辑运算符 - 6.4 ?:运算符

6.4 ?:运算符


6.4 ?:运算符

C++有一个常被用来代替if else语句的运算符,这个运算符被称为条件运算符(?:),它是C++中唯一一个需要3个操作数的运算符。该运算符的通用格式如下:

        expression1 ? expression2 : expression3

如果expression1为true,则整个条件表达式的值为expression2的值;否则,整个表达式的值为expression3的值。下面的两个示例演示了该运算符是如何工作的:

        5 > 3 ? 10 : 12           //5 > 3 is true, so expression value is 10

        3 == 9 ? 25 : 18         //3 == 9 is false, so expression value is 18

可以这样解释第一个示例:如果5大于3,则整个表达式的值为10,否则为12。当然,在实际的编程中,这些表达式中将包含变量。

程序清单6.9使用条件运算符来确定两个值中比较大的一个。

程序清单6.9 condit.cpp

//condit.cpp -- using the conditional operator
#include<iostream>
int main()
{
	using namespace std;
	int a, b;
	cout << "Enter two integers: ";
	cin >> a >> b;
	cout << "The larger of " << a << " and " << b;
	int c = a > b ? a : b;	//c = a if a > b, else c = b
	cout << " is " << c << endl;
	return 0;
}

下面是该程序的运行情况:

        Enter two integers: 25 28

        The larger of 25 and 28 is 28

该程序的关键部分是下面的语句:

int c = a > b ? a : b;

它与下面的语句等效:

int c;
if (a > b)
    c = a;
else
    c = b;

与if else序列相比,条件运算符更简洁,但第一次遇到时不那么容易理解。这两种方法之间的区别是,条件运算符生成一个表达式,因此是一个值,可以将其赋给变量或将其放到一个更大的表达式中,程序清单6.9中的程序正是这样做的,它将条件表达式的值赋给变量c。条件运算符格式简洁、语法奇特、外观与众不同,因此在欣赏这些特点的程序员中广受欢迎。其中一个技巧(它完成一个应被谴责的任务——隐藏代码)是将条件表达式嵌套在另一个条件表达式中,如下所示:

const char x[2][20] = { "Jason ", "at your service\n" };
const char* y = "Quillstone ";

for (int i = 0; i < 3; i++)
    cout << ((i < 2) ? !i ? x[i] : y : x[1] );

这是一种费解的方式(但绝不是最难理解的),它按下面的顺序打印3个字符串:

        Jason Quillstone at your service

从可读性来说,条件运算符最适合于简单关系和简单表达式的值:

        x = (x > y) ? x : y;

当代码变得更复杂时,使用if else语句来表达可能更为清晰。

举报

相关推荐

0 条评论