三目运算符
C++有一个常用来代替if-else语句的操作符,这个操作符被称为三木运算符(?:),它是C++中唯一一个需要3个操作数的操作符。该操作符的通用格式如下:
b?a:c
如果b为真,则整个表达式的值为a;否则表达式的值为c。下面两个语句演示了该操作符是如何工作的:
x=5>3?10:12 //5>3为真,所以x=10;
x=3==9?25:18 //3==9为假,所以x=18;
程序练习
使用三目运算符来确定两个值中较大的一个
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int c=a>b?a:b; //相当于int c;if(a>b) c=a;else c=b;
cout<<c<<endl;
return 0;
}
与if-else序列相比,三目运算符更简洁,但第一次使用时不那么容易理解。这两种方法之间的区别是,三目运算符返回一个值,可以将其赋给变量或者将其放到一个更大的表达式中。例如x=a>b?(c>d?e:f):g;
相当于:
if(a>b)
{
if(c>d) x=e;
else x=f;
}
else x=g;
从可读性来说,条件操作符最适合于简单表达式的值:x=(a>b)?a:b;
当代码变得更复杂时,使用if-else语句更清晰。