C++条件运算符( ? : )
2021/10/7 14:12:36
本文主要是介绍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错误的
在我们写程序一定要注意运算优先级问题,如果我们不清楚,就加个括号。
这篇关于C++条件运算符( ? : )的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享