A) 20, 9, 19, 10 in first -- printf "j" will be printed first then subtracted one from it. however from "i" one will subtracted before printing it on the screen
In printf() evaluation happens from right to left. <--- . so --i is evaluated first and then j--.
When --i is evaluated, first it should decrement and then assign to i. So the value becomes 9. When j-- is evaluated, first assign and then decrement. So j-- value will be 20 only at that time later it will be 19.
At this point of time i=9 and j=19.
Now the second printf(), Here also right to left. So ++i value will be(increment and then assign) 10. Where as j++(assign first then increment) its value will be still 19. After this printf() if we print the i and j values it will be 10 and 20.
Extra Information: Whenever parameters are passed to a function, after evaluation they are stored in stack. similarly, --i value ie 9 is pushed into stack and later j-- value ie 20. So while printing on the screen, the first value ie j-- is poped first and later --i value. Hence we get 20,9 as the output of the first printf(). similarly we get 19,10