就这一段话,看的我有点懵逼,然后我就去上网搜了别人的解说,然后写了一篇文章,供大家理解。
先学习其他语言里的与或非。
短路与(逻辑与)和非短路与。或也是如此,不在重复,接下来拿与举例子。
这篇文章中的这个例子讲解的很通透。
先来看牛客的一道题
如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}
A i=0;j=0
B i=1;j=1
C i=0;j=1
D i=1;j=0
答案是:D
(++i>0)||(++j>0) 中的||是短路与。
这题考察短路逻辑的用法
&& 若前面的表达式结果为false,整个逻辑表达式的结果就为false,所以后面的表达式无论true或者false都无法影响整个逻辑表达式的结果,所以为了提高代码执行效率,后面的表达式就不会执行。
同理,若前面的表达式为true,则后面的表达式也无需计算。
无论什么情况,前面的和后面的表达式都要执行。
python的与或非具有短路效果。
&&具有短路的效果。左边是false,右边就不执行。
||具有短路的效果,左边为true,右边不执行
运算符
not,and,or
not
语法:not x
作用:
对x进行布尔取反/取非
非真即假,非假即真
如bool(x)为True,not x 则为False
如bool(x)为False,not x 则为True
示例:
not True : False
not False : True
month = 10
if not 1<=month<=12:
print(‘month不在1-12之间’)
and 运算符
语法:
x and y
注:x 和 y 是两个表达式,可以是bool,也可以是非bool
如果是非bool的话,会通过bool()进行转换
作用:
将x和y做并列运算
如果x和y的结果都为True,那么整个结果则为True
如果x和y有任意一个结果是False,那么整个结果则为False
示例
特殊:
1. 0 and 0 :0
2. 0 and 15 :0
3. 15 and 18 :18
and 两端的操作数,如果左侧已知为False的话,则不判断右侧,并以左侧操作数的值作为整体表达式的值
and 两端的操作数,如果左侧判断为True的话,则继续判断右侧,并以右侧操作数的值作为整体表达式的值
和其他语言逻辑运算的区分:
首先,‘and’、‘or’和‘not’的优先级是not>and>or。
其次,逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。
例如,如果A 和C 为真而B 为假, A and B and C 不会解析C 。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与C语言中不同。
举个例子:
在以上例子中,按照C语言对的思维,3 and 4即3与4为3,但是由于是短路操作符,结果为4,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,即为4;改变一下顺序4 and 3 ,结果也不一样,即为3.
而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4.
参考:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务