a=0
b=5
当我们试图得到这个结果时:
print str((23-11)/a*b)
我们得到被零除的误差。你知道吗
Traceback (most recent call last): File "", line 1, in print str((23-11)/a*b) ZeroDivisionError: integer division or modulo by zero But if we change positions:
print str((23-11)/b*a)
结果为零:
0
我们应该得到总是除以y的零误差吗(因为(b*a)是零)?你知道吗
对
(23-11)/a*b
的求值分解如下:((23-11)/a)*b见:Operator precedence
在
print str((23-11)/a*b)
这就是发生的事情1.计算23-11
2.将步长除以a(0)
3.将步骤2乘以b(5)
步骤2给出了零除法误差
然而,在
print str((23-11)/b*a)
这就是发生的事情1.计算23-11
2.将步骤2除以5
3.将步骤3乘以0。你知道吗
没有零除数错误,因为计算机除以5,然后再乘以0,而不是除以0*5。这是因为按照运算顺序,乘法和除法具有同等的优先级,所以它们只是从左到右执行。你知道吗
((23-11)/a*b)
变成((23-11)/b*a)
变成相关问题 更多 >
编程相关推荐