iOS中奇妙的三目运算符示例详解

 更新时间:2018年07月11日 11:45:54   作者:木暮風  
大家都知道在oc中可以使用三目运算符来进行条件的判断,这相对于if else 来说更加的简洁,下面这篇文章主要给大家介绍了关于iOS中奇妙的三目运算符的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

前言

三目运算符:也叫三元运算符。这个运算符的符号是: ? :,下面这篇文章主要给大家介绍了关于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中,有一类很奇怪的运算符,自增(++)/自减(--)运算符。那么它在三目运算符中的表现如何呢?
如:

int x = 0; 
int y = ++x ? ++x : 3;

则最终,y的值为2。

然而,

int x = 0; 
int y = ++x ? : 3;

最终,y的值居然是1。

怎么两次的结果不一致呢?按照上面的结论,y的值应该都是2才对啊。

那为什么第一种结果y的值为2,而第二种结果y的值为1呢?

结论

据我猜想,? 与: 之间省略的应该是?之前表达式的值,而不是省略的表达式。

这样就可以解释上面所有的情况了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

相关文章

  • ios开发中的容错处理示例详解

    ios开发中的容错处理示例详解

    最近发现还是有很多朋友在问类似解析时容错问题怎么解决,所以下面这篇文章主要给大家介绍了关于ios开发中的容错处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起来看看吧
    2018-05-05
  • iOS开发APP跳转到设置或系统页面详解

    iOS开发APP跳转到设置或系统页面详解

    这篇文章主要为大家介绍了iOS开发APP跳转到设置或系统页面详解,<BR>有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • iOS多线程应用开发中使用NSOperation类的基本方法

    iOS多线程应用开发中使用NSOperation类的基本方法

    这篇文章主要介绍了iOS多线程应用开发中使用NSOperation类的基本方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-11-11
  • Mac OS自带了apache基本用法总结

    Mac OS自带了apache基本用法总结

    这篇文章主要介绍了Mac OS自带了apache基本用法总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • IOS开发之CocoaPods安装和使用教程

    IOS开发之CocoaPods安装和使用教程

    CocoaPods应该是iOS最常用最有名的类库管理工具了,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。
    2014-09-09
  • IOS代码笔记之左右滑动效果

    IOS代码笔记之左右滑动效果

    这篇文章主要为大家详细介绍了IOS代码笔记之左右滑动效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • IOS 开发之UITextField的光标操作扩展

    IOS 开发之UITextField的光标操作扩展

    这篇文章主要介绍了IOS 开发之UITextField的光标操作扩展的相关资料,需要的朋友可以参考下
    2017-06-06
  • Flutter Widgets之标签类控件Chip详解

    Flutter Widgets之标签类控件Chip详解

    这篇文章主要为大家介绍了Flutter Widgets之标签类控件Chip详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • IOS 中CATextLayer绘制文本字符串

    IOS 中CATextLayer绘制文本字符串

    这篇文章主要介绍了IOS 中CATextLayer绘制文本字符串的相关资料,希望通过本能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • 揭开iOS逆向解密的神秘面纱

    揭开iOS逆向解密的神秘面纱

    这篇文章主要给大家介绍了关于iOS逆向解密的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06

最新评论