zoukankan      html  css  js  c++  java
  • 逻辑运算

    一、逻辑运算符的种类及优先级

    ▷逻辑运算符包括 not and or 

    ▷他们的优先级是 () > not > and > or

    二、普通逻辑运算

    ▷A and B --->  A和B都位真的时候结果为真,有一个为假结果即为假

    ▷A or    B --->  A和B有一个为真结果即为真

    A和B可以为 bool值(True、False),可以为比较运算(3>1 、4<3 、1 !=1 )

    三、两边为数字的逻辑运算

    大家都知道,0可以用来表示bool值 False,而除了0之外的所有数字都可以表示bool值True,

    所以说,逻辑运算两边也可以用数字表示

    ▷ or 运算

    从上面的例子可以看出  A or B  ,当A的值为Ture的时候,返回的是A的值,当A的值为False的时候,返回的为B的值(A、B为数字类型就返回数字类型,为布尔类型就返回布尔类型)

    A、B为比较运算的时候同样适用上面的那个结论

    ▷ and 运算

    与or运算刚好相反,当运算符为and的时候,A and B ---> A若为真,则结果为B,A若为假则结果为A

    四、总结

    A  or  B    A为真,结果为A。   A为假,结果为B

    A and B   A为真,结果为B,   A为假,结果为A  

    PS:

    ▷ A或者B为数字的时候,返回的就是数字,A或B为布尔类型或者比较运算的时候,返回的值为True或者False

    ▷ or与and的结果恰好相反,记一种即可

    其实往深层次想一下,之所以会有这样的结果,跟计算机运算逻辑有关

    我们都知道,A and B ,两边均为真的时候结果才为真,而如果计算机检测到A为False的时候,那么不管B为何止何值,结果均为False,所以计算机只需要返回A的值即可

    它甚至不会去读B的值,所以结果不可能会是B,为了验证这个猜测,我们给B赋一个毫无逻辑性的东西试一下

    大家可以看到,计算机检测到 and 前面为0(False)的时候,它就不会去检测后面的值了,所以我们输入了一串乱七八糟毫无逻辑的字符串它还是不会报错,直接返回0

    而如果计算机检测到A为True的时候,那么它才会去检测B的值,B为真,结果为真,B为假,结果为假,所以只需要直接返回B的值即可(当然,B就不能为毫无逻辑的字符串了)

    同理,当A or B的时候,两边有一个为真即为真,所以如果A为真的话,计算机就不会去检测B的值,直接返回A的值,验证如下:

    而当A为假的时候,它才会去检测B的值,B为真,结果为真,B为假,结果为假,所以只需要直接返回B的值即可,这就能很好的理解上面的结论了。

     

  • 相关阅读:
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    Code froces 831 A. Unimodal Array
    无聊随便敲敲
  • 原文地址:https://www.cnblogs.com/fu-yong/p/8060208.html
Copyright © 2011-2022 走看看