问: Python 计算 -7%4 + 1 与 1 - 7%4 二者计算结果相等吗?
答: 不等!前者结果为2,后者为-2。
对此,作如下两点解释:
1. 首先看一下Python计算的优先级,官方手册的截图如下(https://docs.python.org/2/reference/expressions.html#id20):
The following table summarizes the operator precedences in Python, from lowest precedence (least binding) to highest precedence (most binding).
可以看到%的优先级是高于“加、减运算”,而低于“数的正、负级”。
所以-7%4 + 1中先计算的是(-7)%4,
而1-7%4中先计算的是7%4 。
2. 取余计算的原则 —— 余数应该大于0
-7 = (-2)*4 +1,所以-7%4 = 1
7 = 1*4 + 3, 所以7%4 = 3