pkuqqz 发表于 2020-4-4 21:39:46

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 ???

pkuqqz 发表于 2020-4-4 21:41:08

还有一个问题……
为什么 0 or 0 or 4 or 6 or 9 ==4 ?

最后的魁拔 发表于 2020-4-4 21:42:42

or是一真则真

yexing 发表于 2020-4-4 21:42:43

这是我的理解,希望对你有帮助,看懂了代进去算就恍然大悟了

sunrise085 发表于 2020-4-4 21:46:45

本帖最后由 sunrise085 于 2020-4-4 21:49 编辑

可以看看我总结的这个帖子,关于andornot的用法

还有这个帖子,我在这里回答的很详细

墨羽岚 发表于 2020-4-4 21:48:03

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

非零即一 发表于 2020-4-4 21:48:37

因为0属于假所以直接就返回假了后面的就不在运算了,3and4两个都为真,and必须两个都为真,所以返回第二个值。or这个只要有一个为真就可以了,所以遇到第一个为真的时候后面就不在运算了直接返回第一个遇到为真的值

非零即一 发表于 2020-4-4 21:50:57

and是必须两个都为真才为真,所以遇到第一个为真还要继续运算第二个也为真才可以,因为0属于假所以直接就返回假了后面的就不在运算了,3and4两个都为真,and必须两个都为真,所以返回第二个值。or这个只要有一个为真就可以了,所以遇到第一个为真的时候后面就不在运算了直接返回第一个遇到为真的值
页: [1]
查看完整版本: and / or (零基础文科生轻喷)