When i run the following example i get the output 0,2,1
class ZiggyTest2{
static int f1(int i) {
System.out.print(i + \",\");
The solution can be understood from this example
public static void main(String[] args) {
int i = 0;
i = i++;
System.out.println("i is" + i);
}
/* The output is "i is 0" */
Hence from this line,
i = i++ + f1(i);
Your i is still 1 and obviously the function is going to return 0. Which is again stored in i and hence the value 1. Instead of the updated value of i being stored in i, you are overriding it by the assignment operator.