zoukankan      html  css  js  c++  java
  • 编程漫谈系列(1)条件运算符

    条件运算符

    这里的条件运算符是指C系列语言(C/C++, Java, C# ... )中的三目运算符 ? : ,其语法形式如下:

    <表达式1> ? <表达式2> : <表达式3>

    表达式1 为布尔表达式,若其值为真则返回表达式2,若其值为假则返回表达式3。

    条件运算符在大多数语言中为右结合,但在PHP中为左结合。在嵌套使用时需注意。

    条件运算符的常规用例

    条件运算符通常用于以下两种情形:

    • 初始化(initialization)
    // C++
    const std::string s = b ? "foo" : "bar";
    // Java
    final String s = b ? "foo" : "bar";
    // Swift
    let s: String = b ? "foo" : "bar";
    
    • 情况选择(case selectors)
    // 根据头字母选择交通工具
    vehicle = arg == 'B' ? bus :
              arg == 'A' ? airplane :
              arg == 'T' ? train :
              arg == 'C' ? car :
              arg == 'H' ? horse :
                           feet;
    // 判断是否为闰年
    isLeapYear =
        yyyy % 400 == 0 ? 1 :
        yyyy % 100 == 0 ? 0 :
        yyyy % 4 == 0 ? 1 : 0;
    

    条件运算符与 if 语句

    条件运算符通常用于替代 if 语句来进行有条件的计算和赋值。
    条件运算符和 if 语句两者的区别在于前者是表达式而后者是语句。

    条件运算符是表达式,有声明式编程的特点,功能简单纯粹:

    • 条件运算符通常用于计算,较少用于产生副作用。
    • 使用条件运算符必须同时提供条件为真时的值和条件为假时的值。
    • 使用条件运算符可以直接返回值,也可将运算结果赋给一个变量。
    • 使用条件运算符进行赋值时变量的声明和赋值可以同时进行。
      用于赋值的变量可声明为只读类型。
      代码相对简洁(只需1行代码),不过有无法加断点调试的缺点。
    • 条件运算符本质上属于缩写,?相当于后置的 if, 而 :则相当于 else。
      由于使用符号来指代语义,相对于同等功能的 if 语句来说条件运算符的可读性略低。

    if 语句是语句,有命令式编程的特点,功能不纯粹:

    • if 语句可以用于计算,也可用于产生副作用。
    • if 语句用于计算时无法强制约定同时计算条件为真时的值和条件为假时的值。
    • if 语句无法直接返回值,即便不需要赋值,也只能先将运算结果存放在一个临时变量中。
    • 使用 if 语句进行赋值时变量的声明和赋值无法同时进行,必须先声明变量然后在 if 语句中赋值。
      用于赋值的变量无法声明为只读类型。(把 if 语句的处理放在函数中也可以做到,不过代价太高昂)
      代码相对冗长(需要5行至9行代码),不过有可以加断点调试的优点。
    • if 语句使用关键字 if 以及 else 来指代语义,其可读性要好于条件运算符。

    使用条件运算符代替 if 语句的理由

    技术性理由

    • 进行赋值时变量的声明和赋值可以同时进行。
    • 减少临时变量的使用。
    • 消除冗余代码。
    • 减少不必要的缩进以及代码块。

    非技术性理由

    • 酷(cool):使用条件运算符的代码更酷。
    • 聪明(clever):使用条件运算符的程序员显得更聪明。

    参考链接

    To ternary or not to ternary? [closed]

    三項演算子を使うべき理由

  • 相关阅读:
    201911320《信息安全专业导论》第二周学习总结
    20191330自我介绍
    20191218 实验四《Python程序设计》实验报告
    20191218 2019-2020-2 《Python程序设计》实验三报告
    20191218 实验二《Python程序设计》实验报告
    20191218 实验一 《Python程序设计》实验报告
    2019-2020-1学期 20192420《网络空间安全专业导论》第四周读书笔记
    2019-2020第一学期小组讨论--程序设计层6、7章
    20192415 2020-2021-2 《Python程序设计》实验4报告
    20192415 2020-2021-2 《Python程序设计》实验3报告
  • 原文地址:https://www.cnblogs.com/zwvista/p/8151819.html
Copyright © 2011-2022 走看看