经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++三元表达式详情
来源:jb51  时间:2021/11/16 13:13:30  对本文有异议

if-else语句非常常用,但在进行一些简单逻辑判断的时候,会显得有些不太简洁。特别是在初始化的时候,比如我们有一个变量,某种情况下赋值成a,另外的情况下赋值成b。

使用if-else语句写出来就是:

  1. int cur;
  2. if (condition) {
  3. cur = a;
  4. }else {
  5. cur = b;
  6. }
  7.  

这当然是没问题的,只是在大量使用的时候会显得有些繁琐。因此C++当中推出了三元表达式对此进行简化,三元表达式也被称为条件运算符(?:)。

运算符的通用格式如下:

  1. condition ? expression1 : expression2;
  2.  

问号之前的condition表示一个逻辑运算,如果结果为true,返回expression1的值,否则返回expression2的值。

使用三元表达式之后,刚才上述的代码可以改写成:

  1. int cur = condition ? a : b;

这样我们就把6行代码压缩成了一行,简化了代码,但也因此了增加了代码阅读的难度。因此只推荐在简单逻辑判断下使用三元表达式,也不推荐嵌套使用,会使得代码非常难以阅读。

最后分享一个我个人特别喜欢的使用三元表达式的场景,就是结构体排序的cmp函数。

比如我们有这样一个场景,需要使用一个结构体存储两个值x和y,代表一个坐标。我们需要对坐标进行排序,排序的规则是x轴小的在前,如果x轴相等,则y小的在前。

  1. struct P {
  2. int x, y;
  3. };
  4.  
  5. P arr[1000];
  6.  

大家都知道,要对这样的结构体排序,一种做法是我们可以额外实现一个cmp函数作为sort排序函数的传参。如果不使用三元表达式,

那么cmp函数是这样的:

  1. bool cmp(const P &a, const P &b) {
  2. if (a.x == b.x) {
  3. return a.y < b.y;
  4. }else {
  5. return a.x < b.x;
  6. }
  7. }
  8.  

使用三元表达式的话,整个逻辑只有一行:

  1. bool cmp(const P& a, const P& b) {
  2. return a.x == b.x ? a.y < b.y : a.x < b.x;
  3. }
  4.  

到此这篇关于C++三元表达式详情的文章就介绍到这了,更多相关C++三元表达式内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 文章转自:公众号:Coder梁(ID:Coder_LT)

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号