C++三元表达式详情

📅 2026/7/6 11:55:01
C++三元表达式详情
if-else语句非常常用但在进行一些简单逻辑判断的时候会显得有些不太简洁。特别是在初始化的时候比如我们有一个变量某种情况下赋值成a另外的情况下赋值成b。使用if-else语句写出来就是123456intcur;if(condition) {cur a;}else{cur b;}这当然是没问题的只是在大量使用的时候会显得有些繁琐。因此C当中推出了三元表达式对此进行简化三元表达式也被称为条件运算符(?:)。运算符的通用格式如下1condition ? expression1 : expression2;问号之前的condition表示一个逻辑运算如果结果为true返回expression1的值否则返回expression2的值。使用三元表达式之后刚才上述的代码可以改写成1intcur condition ? a : b;这样我们就把6行代码压缩成了一行简化了代码但也因此了增加了代码阅读的难度。因此只推荐在简单逻辑判断下使用三元表达式也不推荐嵌套使用会使得代码非常难以阅读。最后分享一个我个人特别喜欢的使用三元表达式的场景就是结构体排序的cmp函数。比如我们有这样一个场景需要使用一个结构体存储两个值x和y代表一个坐标。我们需要对坐标进行排序排序的规则是x轴小的在前如果x轴相等则y小的在前。12345structP {intx, y;};P arr[1000];大家都知道要对这样的结构体排序一种做法是我们可以额外实现一个cmp函数作为sort排序函数的传参。如果不使用三元表达式那么cmp函数是这样的1234567boolcmp(constP a,constP b) {if(a.x b.x) {returna.y b.y;}else{returna.x b.x;}}使用三元表达式的话整个逻辑只有一行123boolcmp(constP a,constP b) {returna.x b.x ? a.y b.y : a.x b.x;}到此这篇关于C三元表达式详情的文章就介绍到这了,