美文网首页
连续不等式判断

连续不等式判断

作者: 圆脸黑猫警长 | 来源:发表于2020-12-24 10:49 被阅读0次

    一、基础

    对于一个区间的判断是十分常见的需求,比如需要判断a是否在区间[1,9]中。
    正确的判断方式是

    if (a >=1 && a<=9){
        // 进入此处即是[1,9]之间
    }
    
    这里容易出现一种常见的思维误区:直接使用连续不等式判断
    if (1<= a <=9){
      // 这样的判断是错误的    
    }
    

    为什么使用连续不等式不能正确的判断呢?这是因为和计算机执行的过程有关系,在执行1<= a <=9时并不是直接进行的两次判断(1 <= a和 a <= 9),而是先执行1 <= a,然后拿这个结果去和<= 9进行比较 ,很多编程语言中1 <= a得到的结果是true或者 false
    那么在执行true <= 9会发生什么? 这两个是不同的数据类型,判断的时候会自动进行类型转换(隐式类型转换),很多编程语言是将true转换为1false转换为0,那么整个连续不等式判断结果就是 1 <= 9 或者 0 <= 9 的结果,由此可见,1 <= a <= 9的执行结果永远都是true,并非预期结果

    二、进阶

    除隐式数据类型转换,在逻辑判断符 &&||中还有一个短路特性,即执行到达成结果的最小单元后不再进行后续代码运算。
    例如 A && B , A、B可以是任何返回true\false的表达式。如果A的到的结果是false, A && B 的结果就已经可以确定为false,此时,就不会去执行B。同理,如果在 A || B 中 A的值是true, 那么结果也可以确定为true,此时就不会去执行B。

    这样的短路特性可以简化代码的书写,但是同时也降低了代码的可阅读性,甚至执行到一些非预期结果。

    相关文章

      网友评论

          本文标题:连续不等式判断

          本文链接:https://www.haomeiwen.com/subject/ocapnktx.html