下麵的代碼用於取4和2的中點,說明位移運算符優先順序低於加減: 而正確的寫法如下所示: 一般取中點的操作我們寫為 1 mid = low + ((high-low)>>1) 而不是 是考慮到了有可能會溢出的情況。 ...
下麵的代碼用於取4和2的中點,但結果不是我們預期中的3,原因是位移運算符優先順序低於加減:
1 public class test { 2 public static void main(String[] args) { 3 System.out.println(2+(4-2)>>1); 4 } 5 }
輸出:2
正確的寫法如下所示,加上小括弧保證位移先於加減執行:
1 public class test { 2 public static void main(String[] args) { 3 System.out.println(2+((4-2)>>1)); 4 } 5 }
輸出:3
另外上面的取兩個數的中點是一種典型的寫法,一般將取兩個數中點的操作寫為
1 mid = low + ((high-low)>>1)
而不是
mid = (high+low)>>1
是考慮到了兩個數相加有可能會溢出的情況。