我正在尝试以下Java代码段:

int[] testArray={10,20,30,40};
int i= 0;
testArray[i++]= testArray[i++]+1;

System.out.println("The value of i: "+i);

for(int i1=0;i1<testArray.length;i1++)
{
    System.out.println(testArray[i1]);
}


当i = 0时,数组的输出值为:21, 20,30,40

我无法理解此输出,因为输出应为:10, 11, 30, 40

testArray[0]+1将是11,然后将其分配给testArray[1],但事实并非如此。
有人可以解释输出吗?

最佳答案

这个:

int i= 0;
testArray[i++]= testArray[i++]+1;


等效于:

int i= 0;
testArray[0]= testArray[1]+1;


等效于:

int i= 0;
testArray[0]= 20 + 1;


后递增运算符正在增加int的值,导致它拉动表达式中索引1中的元素,该索引为==20。显然,随后的加法将得到值21,然后将其分配给数组的索引0。

换句话说,它与您的代码描述有关。您没有使用假设的数组索引。

关于java - 前/后增量运算符和数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20193083/

10-09 02:01