2016-09-30 222 views
2

爲什麼下面的代碼打印25.我猜想它應該打印28代替。有人可以像計算機一樣逐步評估它。謝謝。表達式評估序列

class MultiAssign 
{ 
    public static void main(String[] args) 
    { 
     int k = 1; 
     k += (k = 4) * (k + 2); // or k = k + (k = 4) * (k + 2); 
     System.out.println(k); 
    } 
} 

回答

0

查看操作發生的順序。你會注意到k的值只有在寫入k = 4之後纔會變爲4.在該語句之前,k的值將保持爲1