我正在尝试以下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]);
}
Run Code Online (Sandbox Code Playgroud)
当i = 0时,数组的输出值为: 21, 20,30,40
我无法理解这个输出,因为输出应该是: 10, 11, 30, 40
testArray[0]+1
会是11
,它会被分配给testArray[1]
但不是这样的.任何人都可以解释输出吗?
在以下任务中:
testArray[i++] = testArray[i++] + 1;
Run Code Online (Sandbox Code Playgroud)
首先i++
评估值,即出现0
.然后i
增加值.因此,在RHS开始评估之前,价值i
已经成为现实1
.所以,基本上,上面的表达式相当于:
testArray[0] = testArray[1] + 1;
Run Code Online (Sandbox Code Playgroud)
在上面的表达式之后,值i
将是2
.但是,如果您将表达式更改为:
testArray[i] = testArray[i++] + 1;
Run Code Online (Sandbox Code Playgroud)
..你会得到预期的结果.