C++条件运算符( ? : )

条件运算符就是把简单的 if - else 逻辑嵌入到单个表达式中,使用形式:

cond ? expr1  : expr2 ;

cond是判断的条件,如果为真就输出expr1 ,否则就输出 expr2;需要注意的是expr1和expr2是两个类型相同或可以转换为某个公共类型的表达式,反正就是它们必须最后是具有相同性质或特点的。

用例:检测成绩是否合格:

string finalgrade = (grade < 60) ? "fail" : "pass" ;
//如果成员合格大于或等于60,表达式的值为pass , 否则为fail。

可以嵌套条件运算符:

finalgrade = ( grade > 90 ) ? "高分通过" : ( grade < 60 ) ? "不合格" : "合格" ;

上面代码是个很好的例子,分了三个等级,它会先判断是否大于90,大于就输出高分通过,不满足就再判断下一个条件,小于就输出不合格,大于或等于60并且小于或等于90就输出合格。

条件运算符满足右结合律,运算对象一般按照从右向左的顺序组合。

在输出表达式中使用条件运算符:

条件运算符的优先级非常低,在表达式中嵌套条件运算子表达式时,通常需要在它两端加上特号。

cout<<((grade < 60) ?  "fail" :  "pass");//输出pass或者fail
cout<<(grade < 60 ) ?  "fail" :  "pass" ;//输出0或者1
cout<<grade < 60 ?  "fail" :  "pass" ; //错误的,这个代码试图比较cout和60

上面代码中第二条语句等价于:

cout<<(grade < 60 ) ?  "fail" :  "pass" ;//输出0或者1
//等价于:
cout<< (grade < 60 ) ;//输出0或者1 (0表示真,1表示假)
cout ? "fail" : "pass" ; //根据cout的值是真还是假产生对应的字面值

上面代码中第三条语句等价于:

cout<<grade < 60 ?  "fail" :  "pass" ; //错误的,这个代码试图比较cout和60
//等价于:
cout<< grade ; // 小于运算符的优先级低于移位运算符,所以先输出grade 
cout << 60 ? "fail" : "pass" ;//比较cout和60错误的

在我们写程序一定要注意运算优先级问题,如果我们不清楚,就加个括号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syhk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值