时间:2021-05-20
前言
三目运算符:也叫三元运算符。这个运算符的符号是: ? :,下面这篇文章主要给大家介绍了关于iOS三目运算符的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
基础
一般情况下,我们使用三目运算符(?:)的语法格式是:
(expression)?if-true-statement :if-false-statement;
如果表达式expression结果为真,则执行if-true-statement,否则执行if-false-statement。
我们经常会使用三目运算符进行简单的判断赋值,例如:
y = x ? x : z;
即如果x为真,则返回x,如果x为假,则返回z,这是最简单最基本的用法。
高级
但是偶尔我们也会看到这种用法:
y = x ? : z;
? 与 :之间没有任何操作数,这是什么用法呢?
通过几次实验发现,当x为真时,y的值与x值一致。那我猜测? 与 : 之间省略了x。
也就是说,y = x ? : z; 与y = x ? x : z;等价,这样就和事实相一致了。
复杂
但是,这这只是最简单的情况,那么稍微复杂一点的情况呢?
如:a > b ? : b中间省略了什么呢?会是a吗?
经过验证后发现,并不是a。
其实它是省略了a > b 。
也就是说a > b ? : b 等价于 a > b ? a > b : b;
那么这样似乎可以得出结论,? 与 : 中间省略的东西,是与? 之前的表达式一致的。
那么确实是这样的吗?
特例
我们知道,在OC中,有一类很奇怪的运算符,自增(++)/自减(--)运算符。那么它在三目运算符中的表现如何呢?
如:
则最终,y的值为2。
然而,
int x = 0; int y = ++x ? : 3;最终,y的值居然是1。
怎么两次的结果不一致呢?按照上面的结论,y的值应该都是2才对啊。
那为什么第一种结果y的值为2,而第二种结果y的值为1呢?
结论
据我猜想,? 与: 之间省略的应该是?之前表达式的值,而不是省略的表达式。
这样就可以解释上面所有的情况了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言中又有哪些运算符呢?如下所示:※算术运算符※赋值运算符※关系运算符※逻辑运算符※三目运算符C语言基本算术运算符如下表:除法运算中注意:如果相除的两个数都是
1.算术运算符 2.逻辑运算符 3.字符串运算符 4.位操作运算符 5.赋值运算符 6.条件运算符 7.其他运算符 注:除了条件运算符是三目运
1、条件运算符条件运算符(?:)也称为三元(目)运算符,是if...else结构的简化形式,可以嵌套使用。复制代码代码如下:intx=1;strings=x+"
C++单目运算符重载单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于
复合赋值运算符运算符符号加法+=按位与&=按位或|=按位异或^=除法/=左移=减法-=无符号右移>>>=要求版本信息条件(三目)运算符(?:)根据条件执行两个语