我正在尝试以下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/