三目运算符“?:”省略中间操作数

2023-11-13

在使用三目运算符的时候,我们经常见到的是:

x ? x : y

就是if else的简写

如果x为真,就返回x,如果x为假,就返回y。这是最简单最基本的用法。

但是有时候会看到这种用法

x ?: y

?与:之间没有任何操作数,这是什么用法呢?

在通过几个实例的实验后,猜测?与:之间省略了x

也就是说x ? : y  就是 x ? x : y

这样就可以讲的通了。


那么形如 a > b ?: b 中间省略了什么呢,是a吗

验证之后发现并不是a

其实省略了 a > b

也就是说 a > b ?: b 等价于 a > b ? a > b : b

那么可以这样下结论:“?:” 中间省略的东东是与 “?”之前的数或者表达式完全一致。


值得注意的是:在某种情况下,还是会有出入的

譬如 y = ++x ? ++x : 3  与 y = ++x ?: 3

输出的y的结果是不一样的,这是为什么呢?

当x的初始值为0时,第一种写法的输出y的结果为2 ,而第二种写法的输出y的结果为1

说明第一种写法输出的是执行了两次++操作的结果,而第二种写法只执行了一次++操作

所以当有++或--运算的时候,要根据需要判断要不要省略,不能贸然省去,从而引起不必要的错误


其实这种省略方式还是挺好的,特别是代码长度比较长的时候,可以在满足要求的前提下简化代码


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三目运算符“?:”省略中间操作数 的相关文章

  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • 防止UIScrollView的UIPanGestureRecognizer遮挡UIScreenEdgePanGestureRecognizer

    我有一个UIScrollView它填满了我应用程序的一页上的屏幕 但我希望允许用户从屏幕边缘平移以显示其后面的视图 问题是 UIScrollView 窃取了我的触摸UIScreenEdgePanGestureRecognizer在屏幕边缘
  • -[EAGLContext renderbufferStorage:fromDrawable:] 第二次失败?

    我正在开发一个 iOS openGL ES 应用程序 我正在做通常的 EAGLView ES2Render 的事情 启动时 使用以下代码成功创建 frambuffer BOOL createFramebuffers EAGLContext
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定
  • 是什么导致了这个 iPhone 崩溃日志?

    我有点卡住了 需要解决这个问题 因为我的一个应用程序出现了随机崩溃 而这些崩溃并不总是能够重现 这是崩溃日志之一 Incident Identifier 59865612 9F00 44EA 9474 2BF607AD662E CrashR
  • 如何在 Apple Watch Extension/App 和 iOS App 之间建立通信通道

    我正在探索 WatchKit SDK 当我有 WatchKit 应用程序时 是否可以在 WatchKit 应用程序上从 iPhone 应用程序设置值 例如文本 设置 我可以从 iPhone 应用程序调用 WatchKit 应用程序扩展中的函
  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • 这个错误是无效上下文0x0吗?

    我在ViewDidLoad中编写了以下代码 Implement viewDidLoad to do additional setup after loading the view typically from a nib void view
  • Swift 3 错误:[_SwiftValue pointSize] 无法识别的选择器发送到实例

    我刚刚将我们的项目迁移到 swift 3 发现由于一个问题导致大量崩溃 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 SwiftValue pointSize 发送到实例的无法识别的选择器 该
  • Swift - 选择值后隐藏 pickerView

    我发现了类似的问题 他们的答案很有帮助 但我坚持最后一件事 我试图在点击字段时显示 pickerView 然后选择数据时 我希望 pickerView 隐藏 我可以从 pickerView 获取数据来隐藏 但是 pickerView 后面仍
  • Objective Flickr 照片上传错误

    我正在使用 ObjectiveFlickr 库将照片从我的 iPhone 应用程序上传到 Flickr 我可以授权该应用程序并执行一般请求 但在尝试上传照片时遇到错误 要上传的照片是使用 AVFoundation 捕获的图像 这是相关代码
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 我什么时候应该对 IBOutlet 使用弱或强限定符? [复制]

    这个问题在这里已经有答案了 可能的重复 ARC 下 IBOutlets 应该强还是弱 https stackoverflow com questions 7678469 should iboutlets be strong or weak
  • 在 Instruments 中查找内存泄漏行

    我是 iOS 中的仪器新手 我正在尝试使用 Xcode 4 5 2 并按照本教程查找仪器中的内存泄漏 http soulwithmobiletechnology blogspot sg 2011 04 how to check memory
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • 在 iOS 上从 GPS 获取时间

    我正在开发一个跟踪器应用程序 该应用程序需要高精度地了解设备位置 即它使用位置服务并忽略水平精度低于 20 米的位置 CLLocation没有明确声明是否通过 GPS 确定 但是 如果水平精度为 20 米或更好 则可以认为它是来自 GPS
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法

随机推荐

  • 如何使用宝塔面板搭建网站(搭建宝塔页面)

    书接上回 咱们已经搭建好咱们的Linux服务器 接下来改是搭建宝塔页面的教程了 这里我们需要一个域名 自行去各家云服务器购买域名 例如 腾讯云 阿里云 华为云等等 购买一个域名之后我们就可以开始搭建了 首先 启动你的Linux服务器 在此页
  • 4、Nginx 配置实例-反向代理

    文章目录 4 nginx 配置实例 反向代理 4 1 反向代理实例一 4 1 1 实验代码 4 3 反向代理实例二 4 3 1 实验代码 尚硅谷 尚硅谷Nginx教程由浅入深 志不强者智不达 言不信者行不果 4 nginx 配置实例 反向代
  • 0401自学web后端之——Flask配置文件

    输出默认config from flask import Flask current app app Flask name with app app context print dict current app config ENV pro
  • 【转】BAT机器学习面试1000题系列(第288~305题)

    288 LSTM神经网络输入输出究竟是怎样的 YJango 本题解析来源 https www zhihu com question 419497412017年1月4日文章Recurrent Layers 介绍 第一要明确的是神经网络所处理的
  • 信息管理毕业设计选题推荐

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • 爬虫之代理的问题解决

    爬虫之代理 昨天学习小甲鱼的代理 但是弄了一晚上也没成功 一会是什么不积极相应 一会又是什么远程主机拒绝访问 http 45 32 164 128 ip php是个能返回当前访问的IP的网址 123 163 27 115 9999 是我在h
  • 视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

    SLAM 同时定位与地图构建 机器人和计算机视觉领域的基本问题 在未知环境中定位自身方位并同时构建环境三维地图 应用广泛 增强现实 虚拟现实 机器人 无人驾驶 SLAM常用的传感器 红外传感器 较近距离感应 常用与扫地机器人 激光雷达 单线
  • Myeclipse Bule Edition 添加SVN的方法

    今天 因项目需要在Myeclipse中添加svn 添加svn的方法可能有很多种 比较简单的自然是自动安装 这里离介绍一下手动的安装方法 1 需要下载一个subeclipse site的压缩包 网上有得下 subeclipse site 1
  • nginx check健康检查

    nginx利用第三方模块nginx upstream check module来检查后端服务器的健康情况 大家都知道 前段nginx做反代 如果后端服务器宕掉的话 nginx是不能把这台realserver提出upstream的 所以还会有
  • 高性能 Jsonpath 框架,Snack3 3.2.29 发布

    Snack3 一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明 及 Xml dom 一切都是 Node 的设计 其下一切数据都以ONode表示 ONode也即 One node 之意 代表任何类型
  • VUE项目性能优化,v-if,v-for,props,computed,watch......

    VUE项目性能优化 v if v for props computed watch 下个星期就要用vue开发了 就未雨绸缪的搜集了一些干货 整理出来 1 解决v for和v if优先级问题 以及通过计算属性来做数据筛选
  • Dynamics 365 DevOps CI/CD之WebResource

    对于D365自身的发布 简单点来说就是Solution的发布 复杂一些会涉及周边集成接口等一系列的发布 如果是单纯的Solution的发布的Azure DevOps商店里有很多工具 比如Power DevOps Tools 这个我之前也有博
  • Qt之QTableView显示鼠标悬浮下的项的信息

    业务上遇到一些需求 某个需求是当鼠标移动到QTableView的item上时 显示该item的某些信息 首先想到的思路就是鼠标悬浮事件 即安装QTableView的事件过滤器 然后在eventFilter进行判断即可 实现很简单 主要在针对
  • 段式存储管理、段页式存储管理

    分页与分段的区别 1 页是信息的物理单位 是系统管理的需要而不是用户的需要 而段是信息的逻辑单位 分段是为了更好地满足用户的需要 2 页的大小固定且由系统决定 一个系统只能有一种大小的页面 而段的长度不固定 由用户所编写的程序决定 3 分页
  • WinEdt 31天试用期到期解决方案

    WinEdt 在试用期过后 会频繁出现 WinEdt s trial period of 31 days has elapsed 的提示窗口 解决方案 修改脚本Exit edt 从Options Options Interface Adva
  • 多个DLL之间的Static变量以及模板实例化

    结论如下 1 DLL之间调用类public静态成员变量 不能使用A m static形式调用 其中A为类名 m static为A中的static成员变量 若使用 编译出现链接错误 必须使用函数调用方式 为m static增加set get函
  • python得到列表list的交集与差集

    python 神勇 得到两个列表的差集和交集 根本不用循环 一句话就可以搞定 交集 b1 1 2 3 b2 2 3 4 b3 val for val in b1 if val in b2 print b3 差集 b1 1 2 3 b2 2
  • linux gtk主题安装教程,如何获取、安装和制作 GTK 主题

    多数桌面版 Linux 都支持主题 GUI LCTT 译注 图形用户界面 独有的外观或者 风格 叫做主题 用户可以改变主题让桌面看起来与众不同 通常 用户也会更改图标 然而 主题和图标包是两个独立的实体 很多人想制作他们自己的主题 因此这是
  • Delphi Idhttp的post方法

    POST var Sendmessage TStringList 发送内容 Receivemessage TStringStream 返回内容 begin Sendmessage TStringList Create Receivemess
  • 三目运算符“?:”省略中间操作数

    在使用三目运算符的时候 我们经常见到的是 x x y 就是if else的简写 如果x为真 就返回x 如果x为假 就返回y 这是最简单最基本的用法 但是有时候会看到这种用法 x y 与 之间没有任何操作数 这是什么用法呢 在通过几个实例的实