2014-10-28 74 views
1

我有以下代碼位移運算符輸出是什麼類型?

public static void main(String[] args){ 
      //find sign of 32 bit integer 
    int a=0x6348987C; 
    a=a>>31; 
    int one=a&1; 
    if(one==0) 
    { 
    System.out.println("Positive"); 
    } 
    else 
    { 
    System.out.println("Negative"); 
    } 

    } 

如果我改變與if(a&1 ==0)比較行編譯失敗與運營商&不能應用到int,布爾,mking我不知道是什麼引起的移位運算的類型。

+3

'=='具有比'&更高的優先級。 – icza 2014-10-28 16:36:08

回答

2

==在運算符優先級上,==等於運算符位於按位AND運算符的前面(請參閱this page)。你應該把括號,使後者上一頁:

if ((a & 1) == 0) { 

注意的a & 1結果的類型是在原代碼(int)相同類型的one

+0

嗯..感謝您指出,運營商優先,錯誤對我來說沒有意義。 – learningtocode 2014-10-28 23:11:08