Forums Register Login

unable to understand the output

+Pie Number of slices to send: Send
int[] a = new int[2];
int n =0;
a[++n]= ++n;


System.out.println("the array contains "+ a[0] +a[1]);

output 0 2

can u explain what is logic behind output and if i change it to
a[n++]=++n;
then output is
output 2 0
+Pie Number of slices to send: Send
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.
+Pie Number of slices to send: Send
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
+Pie Number of slices to send: Send
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.
+Pie Number of slices to send: Send
thanks joe ...
Happily living in the valley of the dried frogs with a few tiny ads.
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 599 times.
Similar Threads
random number
recursive function call program
Incrementor operator
Indenting output streams
Can some one help me ?
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 00:36:38.