把位移运算括起来!!

2021年5月26日 / 18次阅读 / Last Modified 2021年5月26日
数值计算

搞定一个bug,几乎跟踪了一整天的代码,与正确的参考对吗对比,最后发现错误的原因是位移运算没有括起来,导致计算表达式的优先级没有按照预期的执行!

位移运算的优先级是比较低的!

看下面的测试代码:

>>> 0<<1 + 1
0
>>> (0<<1) + 1
1

位移计算如果不括起来,表示大会先计算1+1。+ 号两边的空格把我误导了,乍一看反应不过来这个加法是要先计算的。

如果你的代码不是数字,而是有点长的变量名称,计算表达式除了位移,还有别的计算混合在一起,这个时候,如果不牢记位移计算要括起来的经验教训,就很容易出现难以debug的bug。

除了Python,C等其它语言,在这个细节上的优先级处理应该都是一样的。

-- EOF --

本文链接:https://www.pynote.net/archives/3695

留言区

您的电子邮箱地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top