2015-10-13 46 views
-3

這是到目前爲止我的代碼運算符優先級 - 得到錯誤的輸出

public class Test1 
{ 
    public static void main(String[] args) { 
     int result = 13 - 3 * 6/4 % 3; 
     System.out.print(result); 
    } 
} 

輸出我得到的12,但它不是假設是-13?

+4

爲什麼它應該是'-13'? –

+0

@SotiriosDelimanolis -3 * 6是-18,-18/4是-4(它是int,所以它切掉了小數部分)。 -4%3是-1,-1 * 13是-13不是嗎? – SethZiotic

+1

嚴重的是,如果您認爲運算符優先級錯誤,至少指定您認爲優先級應該是多少...... – wvdz

回答

2

如果再加澄清括號,表達式變爲:

13 - ((3 * 6/4) % 3); 

由於整數除法的除法運算的結果變爲4 然後,在1模結果 所以最後的結果是12。