我在raspbian上运行python-3.2.3,我在代码中遇到了一些不寻常的结果,我在python shell中调试了一下:
>>> a = [ 7, 33]
>>> a = [7,33]
>>> a[0]<<8
1792
>>> a[1]
33
>>> a[0]<<8 + a[1]
15393162788864
>>> a[1] + a[0]<<8
10240
>>> a[0]*2**8 + a[1]
1825
这里发生了什么,我失踪了?我可以解决这个问题,但是在我不理解的场景背后会发生一些事情。我希望所有这些操作都有相同的结果。
答案 0 :(得分:2)
位移运算符的precedence低于您正在执行的任何其他操作,因此您的表达式相当于:
>>> a[0] << (8 + a[1])
15393162788864
>>> (a[1] + a[0]) << 8
10240