Java说以下计算的结果是-24。 但不是 - ( - 3)*(6)++ == -4 * 7 == -28?
public int rechnung3()
{
int k = -3;
int i = 6;
return --k*i++;
}
答案 0 :(得分:1)
否,因为在评估表达式后发生了后缀增量。基本上,i
仅在结果存储在堆栈上后才会递增。
所以会发生什么相当于这样的事情:
int k = -3;
int i = 6;
k = k -1; // --k makes k = -4
int tmp = k * i; // a temporary location stores the value of (--k) * i = -24
i = i + 1; // i++ increments i, now i = 7
return tmp; // returns -24 (the result from the auxiliary location)
答案 1 :(得分:1)
您的变量k具有“预递减”运算符,这意味着在计算中使用该值之前该值会减小。所以你的-4是正确的。但是,变量i具有“后递增”运算符,这意味着在计算中使用之后值增加。因此,使用的值是6.如果函数中稍后有任何代码(如果您没有立即返回),如果再次使用该变量,则该值将为7。