Python mathematical operators sequence
本问题已经有最佳答案,请猛点这里访问。
1 2 | a=0 b=5 |
当我们试图得到结果时:
1 | 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:
1 | print str((23-11)/b*a) |
结果为零:
0
我们是否应该总是除以y零误差(因为(b*a)是零)?
在
1.计算23-11
2.将步骤除以A(0)
3.将步骤2乘以b(5)
正是第2步给出了零除法误差。
但是在
1.计算23-11
2.将步骤2除以5
3.将步骤3乘以0。
没有零除数错误,因为计算机除以5再乘以0,而不是除以0*5。这是因为按照操作顺序,乘法和除法具有同等的优先级,所以它们只是从左到右执行。
请参见:运算符优先级
它给你一个零,而不是一个错误,因为它除以第一个变量,再乘以第二个变量。例如,如果您将其更改为((23-11)/(ba)或((23-11)/(ab)),它也将返回除以0的错误。但现在它正在计算(23-11)/5*0,我想。