用增量算子计算

时间:2014-02-10 22:48:08

标签: java increment

Java说以下计算的结果是-24。 但不是 - ( - 3)*(6)++ == -4 * 7 == -28?

public int rechnung3()
{
    int k = -3;
    int i = 6;
    return --k*i++;
}

2 个答案:

答案 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。