当前位置: 首页 > news >正文

C++三元表达式详情

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

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

1

2

3

4

5

6

intcur;

if(condition) {

cur = a;

}else{

cur = b;

}

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

运算符的通用格式如下:

1

condition ? expression1 : expression2;

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

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

1

intcur = condition ? a : b;

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

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

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

1

2

3

4

5

structP {

intx, y;

};

P arr[1000];

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

那么cmp函数是这样的:

1

2

3

4

5

6

7

boolcmp(constP &a,constP &b) {

if(a.x == b.x) {

returna.y < b.y;

}else{

returna.x < b.x;

}

}

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

1

2

3

boolcmp(constP& a,constP& b) {

returna.x == b.x ? a.y < b.y : a.x < b.x;

}

到此这篇关于C++三元表达式详情的文章就介绍到这了,

http://www.cnnetsun.cn/news/3183270.html

相关文章:

  • 大厂AI Agent平台架构设计:从任务编排到系统落地的工程实践
  • 网站安全实战指南:十大常见漏洞解析与系统性防御方案
  • 抖音视频批量下载终极指南:简单三步实现无水印下载
  • App合规整改:排查并移除PACKAGE_ADDED广播监听的2种SDK方案
  • MKV58 MCU外扩M24M01E-F EEPROM存储方案详解
  • openEuler/aarch32-rootfs-builder roadmap详解:未来功能与发展方向
  • 【实战指南】从入门到精通:主流整站下载工具与wget命令深度解析
  • JSP实战:从零构建用户管理模块
  • C# .NET 6 WebAPI 对接微信小程序:3类接口设计与JWT鉴权实战
  • Java 事件驱动编程实战:基于 ActionListener 实现游戏逻辑的 2 种状态管理
  • Java+Vue+SpringBoot+MySQL员工绩效系统毕业设计部署与核心模块解析
  • Java+Vue+SpringBoot+MySQL课程作业管理系统:毕业设计实战部署与二次开发指南
  • 古风模特ai图片生成与多平台场景应用案例解析
  • 从DOSBox到86Box:五种虚拟化技术如何解决老软件兼容性问题
  • Balena Etcher终极指南:三步轻松制作系统启动盘,告别命令行复杂操作
  • STBP-tdBN 算法实战:ResNet-50 SNN 在 CIFAR-10 上实现 93.15% 准确率(6 时间步)
  • 01.02.01.DeepSeek:环境搭建篇(数据库 PostgreSQL)
  • 高精度计时系统:CS2200-CP与STM32F415ZG的硬件设计与应用
  • Plone主题开发底层逻辑:ZCA、TAL与Viewlet分层模型解析
  • Maya动画管理终极指南:Studio Library如何提升你的工作效率300%
  • SQL触发器:数据一致性的最后一道闸门
  • Excel slicer高级筛选实战:跨表联动与数据模型原理
  • Zenko:面向多云对象存储的数据编排层与策略驱动实践
  • Python工程选型的四大核心理由:效率、集成、交付与调试
  • DeepSeek服务波动根因解析:从503/504错误到云原生AI弹性瓶颈
  • Django技术向善:用开源框架驱动社会价值落地
  • PIC32与DS28EC20在嵌入式EEPROM存储中的优化实践
  • Snowflake四层架构实战:从账户初始化到可运行数据库
  • ASM330LHH与STM32F439ZG在运动跟踪技术中的应用
  • Django项目Kubernetes+GitOps自动化部署实战