In the first example "a[ ++n ]" the increment is performed BEFORE evaluating the value of n. So, the expressions becomes "a[ 0+1 ] = ++n", that is: "a[ 1 ] = ++n". n now has value of 1, and it is incremented on the left side of " = ": "a[ 1 ] = 1+1", that is: "a[ 1 ] = 2" a[ 0 ] remains with the default value of 0.
In the second example "a[ ++n ]" the increment is performed AFTER evaluating the value of n. So, the expressions becomes "a[ 0 ] = ++n". Only then n is assigned the value of 1, and it is incremented on the left side of " = ": "a[ 0 ] = 1+1", that is: "a[ 0 ] = 2" a[ 1 ] remains with the default value of 0.
thanks for reply but i guess in assignment operator right hand evaluation is done before ..in that case ++n is evaluated first.. so can u nw explain the answer
nish vats, that seems like a reasonable assumption but it turns out to be incorrect. The left-hand operand is evaluated first in order to determine the variable that will receive the newly assigned value. The entire procedure is described in the JLS 15.26.1.