移位运算符优先级比加减运算符低
这是我在做二分查找时发现的问题
误区
发现问题
int mid = start + (end - start) / 2;
int mid = start + (end - start) >> 1;
int mid = start + ((end - start) >> 1);
实际结果
第一个跟第三个通过,第二个超时。为什么?
举例子证实
代码如下
public static void main(String[] args) {
System.out.println(56 + (89 - 67)/2);
System.out.println(56 + (89 - 67) >> 1);
System.out.println(56 + ((89 - 67) >> 1));
}
实际结果