I am learning java and this logic makes me feel confused.
Isn’t here i=20(+1)+20(+1)?
Why 41 instead of 42?
jshell> int i = 20 i ==> 20 jshell> i=i++ + i++ i ==> 41
See this code run at Ideone.com.
Advertisement
Answer
Effectively, the expression i=i++ + i++; is equal to i=i++ + i;. Why? The latter i++ result value is never used and is not propagated. The result of the postfix addition i++ is used as long as the value i is added later in the expression and the result takes the effect. However, after the latter i++ the result value of i is not used.
If you want to achieve the result of 42, you need to perform the postfix assignment (i++) after the whole result is assigned back to the i variable:
int i = 20; i = i++ + i; i++; System.out.println(i);