前/后增量运算符和数组

use*_*888 1 java arrays

我正在尝试以下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]但不是这样的.任何人都可以解释输出吗?

Roh*_*ain 5

在以下任务中:

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)

..你会得到预期的结果.

  • 什么是 RHS?我不熟悉。 (2认同)