and / or (零基础文科生轻喷)
“我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)== 0 or 0 or 4 or 6 or 9
== 4”
请问为什么 0 and 1 == 0,3 and 4 ==4 ???
还有一个问题……
为什么 0 or 0 or 4 or 6 or 9 ==4 ? or是一真则真 这是我的理解,希望对你有帮助,看懂了代进去算就恍然大悟了
本帖最后由 sunrise085 于 2020-4-4 21:49 编辑
可以看看我总结的这个帖子,关于andornot的用法
还有这个帖子,我在这里回答的很详细 and是逻辑判断,两边都不为0则取后面的数为最终值;若有0则为0且左边为0则不判断右边的值;
or也是逻辑判断,两边只有都为0才最终值为0;若有非0则取第一个非0数为最终值且左边不为0时不判断右边的值;
上面两行最后说的不判断就是短路原则。
所以,0 and 1 = 0,3 and 4 = 4;
0 or 0 or 4 or 6 or 9 = 0 or 4 or 6 or 9 = 4 or 6 or 9 = 4 因为0属于假所以直接就返回假了后面的就不在运算了,3and4两个都为真,and必须两个都为真,所以返回第二个值。or这个只要有一个为真就可以了,所以遇到第一个为真的时候后面就不在运算了直接返回第一个遇到为真的值 and是必须两个都为真才为真,所以遇到第一个为真还要继续运算第二个也为真才可以,因为0属于假所以直接就返回假了后面的就不在运算了,3and4两个都为真,and必须两个都为真,所以返回第二个值。or这个只要有一个为真就可以了,所以遇到第一个为真的时候后面就不在运算了直接返回第一个遇到为真的值
页:
[1]