To add a bit of drama to the answer, look at these lines of code.
int ID = 1000;
int IX = 1000;
int GetNextID() {return ID++; }
int GetNextIX() {return ++IX; }
The first one returns 1000 and the second 1001. But if you check, both ID and IX will be 1001 ! Thats because, for ID, increment is done after the return while it is done before for IX.
You may ask how the heck can a code execute after
return
but know that
return
translates into a couple or more lines of assembly code. When debugging, watch these variables, step into each line in dis-assembly window and observe.
I hope now you'll never forget how these work. Ever.