表达式评估序列
问题描述:
为什么下面的代码打印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);
}
}
答
查看操作发生的顺序。你会注意到k的值只有在写入k = 4之后才会变为4.在该语句之前,k的值将保持为1