第四章_表达式_4.7 条件运算符

4.7 条件运算符

4.7 条件运算符

条件运算符?:允许把简单的if-else逻辑嵌入到单个表达式中,条件运算符按照如下形式使用:

cond ? expr1 : expr2

其中cond是判断条件的表达式,而expr1expr2是两个类型相同或可能转换为某个公共类型的表达式。

条件运算符的执行过程:

  1. cond的值;
  2. 如果条件为真对expr1求值并返回该值;
  3. 否则对expr2求值并返回该值。

当条件运算符的两个表达式都是左值或者能转换为同一种左值类型时,运算的结果是左值;否则运算的结果是右值。

嵌套条件运算符

允许在条件运算符的内部嵌套另外一个条件运算符。也就是说,条件表达式可以作为另外一个条件运算符的condexpr

举例如下:使用一对嵌套的条件运算符将成绩分为三档:优秀(high pass)、合格(pass)、不合格(fail)

finalgrade = (grade > 90) ? "high pass"
    					  : (grade < 60) ? "fail" : "pass";

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

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

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

cout << ((grade < 60) ? "fail" : "pass");	// 输出 pass 或者 fail
cout << (grade < 60) ? "fail" : "pass";		// 输出 1 或者 0!
cout << grade < 60 ? "fail" : "pass";		// 错误:试图比较 cout 和 60

第二条表达式等价于

cout << (grade < 60);	// 输出 1 或者 0
cout ? "fail" : "pass";	// 根据 cout 的值是 true 还是 false 产生对应的字面值

第三条表达式等价于

cout << grade;	// 小于运算符的优先级低于移位运算符,所以先输出 grade
cout < 60 ? "fail" : "pass";	// 然后比较 cout 和 60!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值