FengHL 发表于 2021-2-27 11:21:35

or问题

False or 0 的结果为0,那False or o or 4 的结果为什么是4而不是0,前面已经有结果,为什么还要继续运算?

atai0622 发表于 2021-2-27 11:21:36

按照短路逻辑,or命令连接的左右两个元,如果左边为0,那么值就为or右边的值
所以你写的false or 0 or 4,按照从左到右运算,false or 0 结果是0,然后运算0 or 4,因为or左边是0,所以结果是右边的值,也就是4

昨非 发表于 2021-2-27 11:59:02

逻辑语句短路定则:
A or B: 当A为true时,才不会执行B
C and D:当C为false时,才不会执行D

放到你这里,false or 0的结果还是false ,当然要执行后面的 or 4了

湘潭小五 发表于 2021-2-27 14:05:10

我也是刚开始学习,我理解的or,就是前面为真就不会再计算后面的,直接返回前面的值
前面为假就继续执行,如果后面为真就返回后面的值,
两个都都为假,就返回后面的值

jackz007 发表于 2021-2-27 15:17:36

本帖最后由 jackz007 于 2021-2-28 13:00 编辑

      n 个表达式 or 在一起,只要其中有一个的值是 true,那么,整个表达式的值就会是 true,所以,在前面 n - 1 个表达式都是 false 的情况下,仍然不能确定表达式的值,依然需要去测试第 n 个表达式,因为,即便只有这一个表达式的值是 true,也足以让整个表达式的值发生反转;反过来,在 or 在一起的 n 个表达式中,如果第一个的值就是 true,那么,整个表达式的值就被牢牢锁定在 true 上了,后面 n -1 个表达式的值已经无法再影响到整个表达式的值了,也就无需再逐一测试后面那 n - 1 个表达式的值。

      and 的情况是,n 个表达式 and 到一起,只要其中有一个表达式的值是 false,那么, 整个表达式的值就是 false。所以,如果前面已有 n - 1 个表达式的值都是 true,也无法确定整个表达式的值,因为,只要第 n 个表达式的值是 false,也足以使整个表达式的值发生反转;反过来,如果第一个表达式的值是 false,那就已经把整个表达式的值牢牢锁定到 false 上了,后面 n - 1 个表达式的值已经无法再影响到整个表达式的值了,也就无需再去关心、测试后面那 n - 1 个表达式的值了。

bangbang-ande 发表于 2021-2-28 13:58:20

解决这个问题前:我们需要先了解or运算:
or是或运算,只要两个中有一个不是0就会成立,输出不是0的数(比如: 0 or 3就输出3)
如果两个都不是零,那么输出较大那个(比如:4 or 3 就输出了三)
如果两个都是0,那么输出0(比如:0 or 0就输出0)

False or 0 or 4这个问题是这样的:
计算机是由高级到低级,从左到右进行计算的,所以首先计算 False or 0
那么依照上方or计算↑,可以得出结果为0(False表示不成立,0)
接着将False or 0的结果代入False or 0 or 4里,就可以得到:0 or 4
那么依照上方or计算↑,可以得出结果为4
页: [1]
查看完整版本: or问题