zoukankan      html  css  js  c++  java
  • 三目运算符“?:”省略中间操作的特殊用法及举例

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

    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

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

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

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

    感谢:http://blog.csdn.net/road_dongliang/article/details/48134993

  • 相关阅读:
    C# 使用IComparer自定义List类的排序方案
    ubuntu的vim模式
    linux系统目录结构与层级命令使用
    GitHub托管项目
    应用TortoiseGit为github账号添加SSH keys
    PHP中利用PHPMailer配合QQ邮箱实现发邮件
    QQ互联 网站应用接入
    dedecms 中变量函数
    WebSocket 协议
    前端组件库
  • 原文地址:https://www.cnblogs.com/richard-youth/p/8081018.html
Copyright © 2011-2022 走看看