Reputation: 393
int i=0;
int j = --i;
int k = i++ + --i + i-- + j-- + --i + i;
System.out.print("k= "+k); // k=-10
I cant seem to understand how come the value of k is -10 ?
Here is what i feel should have happened. The result should have been -5 as per my calculations.
Expression |Evaluation | Current Values
| | i=0 ,j=-1
i++ | 0 | i=1 ,j=-1
i++ + --i | 0 + 0 | i=0 ,j=-1
i++ + --i + i-- | 0 + 0 + 0 | i=-1 ,j=-1
i++ + --i + i-- + j-- | 0 + 0 + 0 + -1 | i=-1 ,j=-2
i++ + --i + i-- + j-- + --i | 0 + 0 + 0 + -1 + -2 | i=-2 ,j=-2
i++ + --i + i-- + j-- + --i + i; | 0 + 0 + 0 + -1 + -2 + -2 | i=-2 ,j=-2
Please correct me if I am wrong.
*After correcting my mistake of taking i as 0 instead of -1 *
The expression is now evaluating as -10 (-1 + -1 + -1 + -1 + -3 + -3). Thanks.
Expression |Evaluation | Current Values
| | i=-1, j=-1
i++ | -1 | i= 0, j=-1
i++ + --i | -1 + -1 | i=-1, j=-1
i++ + --i + i-- | -1 + -1 + -1 | i=-2, j=-1
i++ + --i + i-- + j-- | -1 + -1 + -1 + -1 | i=-2, j=-2
i++ + --i + i-- + j-- + --i | -1 + -1 + -1 + -1 + -3 | i=-3, j=-2
i++ + --i + i-- + j-- + --i + i; | -1 + -1 + -1 + -1 + -3 + -3 | i=-3, j=-2
Upvotes: 0
Views: 353
Reputation: 51
I think you are missing change of 'i' value in
int j = --i;
Here i turns -1, then j = -1
So you start with i=-1, j=-1 values.
Upvotes: 2
Reputation: 8758
If you correctly do decrements and increments you'll get the following:
int k = -1 + (-1) + (-1) + (-1) + (-3) + (-3)
which is equal to -10
Upvotes: 3