今天写二分更新时忘了加括号:
int mid=l+r+1>>1;
测试了样例居然过了,然后加上括号
int mid=(l+r+1)>>1;
最终结果相同,“移位运算的优先级小于加减运算的优先级,运算时先进行加减”
以前一直有种位运算优先级一定高 的观念
改。
在实现二分搜索算法时,作者最初未在更新中间值时使用括号,即使用了int mid=l+r+1>>1;,但测试通过。后修正为int mid=(l+r+1)>>1;,结果相同。这揭示了移位运算的优先级低于加减运算。文章反思了位运算优先级高于加减运算的常见误解。
今天写二分更新时忘了加括号:
int mid=l+r+1>>1;
测试了样例居然过了,然后加上括号
int mid=(l+r+1)>>1;
最终结果相同,“移位运算的优先级小于加减运算的优先级,运算时先进行加减”
以前一直有种位运算优先级一定高 的观念
改。
687