2016-09-30 127 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