内容: 记录下今天在刷leetcode的时候,不小心犯了一个低级错误,一开始还没看出来错在哪里。
题目:
一开始二分解法:
然后看了下,把 “/” 改成 “>>” 应该会快一点,然后改成如下代码:
结果:运行出错。一开始没注意到运算符优先级问题,以为是移位时出现的问题,想想不对,没有问题啊,一翻了下,发现原来是运算符优先级的问题。这里变成left+(right-left)先运算,然后整体右移,因此出错。
正确修改后如下:此时结果正确。
反思: 在使用混合运算时,除非你有把握记得运算符优先级,否则的话,使用()来指定运算顺序应该是个不错的选择,既能够方便别人理解你的代码,也能够保证结果的正确性。比如:*p++这种就比如容易混淆。
大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。