今天写Java的作业时,要写一个归并排序,写了这样一行代码:

hi = start + step << 1;

本想达到

hi = start + step * 2;

的效果,不料结果完全错误…
实际上在C、C++、Java中,左移、右移运算符的优先级都是低于乘除和加减的,用<<、>>替代* /时一定要加上括号:

hi = start + (step << 1);