news 2026/7/6 11:54:54

C++三元表达式详情

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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++三元表达式详情的文章就介绍到这了,

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 11:49:58

大厂AI Agent平台架构设计:从任务编排到系统落地的工程实践

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 1. 先搞清楚大厂AI Agent平台到底在解决什么实际问题 如果你正在面试大厂的后端、AI平台或架构师岗位&#xff0c;被问到“如何设计一…

作者头像 李华
网站建设 2026/7/6 11:47:55

网站安全实战指南:十大常见漏洞解析与系统性防御方案

1. 网站安全&#xff1a;一场看不见的攻防战 干了这么多年网络安全&#xff0c;最常被问到的问题之一就是&#xff1a;“我的网站到底安不安全&#xff1f;” 很多朋友&#xff0c;尤其是刚创业或者自己搭站的朋友&#xff0c;总觉得网站能打开、功能正常就万事大吉了。但现实是…

作者头像 李华
网站建设 2026/7/6 11:47:22

抖音视频批量下载终极指南:简单三步实现无水印下载

抖音视频批量下载终极指南&#xff1a;简单三步实现无水印下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…

作者头像 李华
网站建设 2026/7/6 11:47:15

App合规整改:排查并移除PACKAGE_ADDED广播监听的2种SDK方案

移动应用合规实战&#xff1a;精准识别与替换PACKAGE_ADDED广播监听方案1. 合规风险背景与现状分析最近一年内&#xff0c;超过60%的移动应用在安全审查中被发现存在过度收集用户设备信息的行为&#xff0c;其中PACKAGE_ADDED广播监听成为重点整改对象。某知名社交应用就因未及…

作者头像 李华
网站建设 2026/7/6 11:47:12

MKV58 MCU外扩M24M01E-F EEPROM存储方案详解

1. 项目背景与需求分析在嵌入式系统开发中&#xff0c;存储扩展是一个永恒的话题。当主控芯片的内置Flash或RAM无法满足应用需求时&#xff0c;外扩存储就成了必选项。MKV58F1M0VLQ24作为NXP Kinetis V系列MCU&#xff0c;虽然内置1MB Flash和256KB RAM&#xff0c;但在以下场景…

作者头像 李华
网站建设 2026/7/6 11:45:30

openEuler/aarch32-rootfs-builder roadmap详解:未来功能与发展方向

openEuler/aarch32-rootfs-builder roadmap详解&#xff1a;未来功能与发展方向 【免费下载链接】aarch32-rootfs-builder Tool scripts and patches for building armv7hf rootfs based on openEuler 项目地址: https://gitcode.com/openeuler/aarch32-rootfs-builder …

作者头像 李华