Let's start with an example:

i = 0;
x = x++;

Will this make x = 0 or x = 1?

We all know the precedence rule and what post increment does (returns the value and then increment the operand). So , lets apply that:

x = (x++);

x = 0; and x will be incremented.

But the problem starts. 

In any text book you would have read till this. But when will x be incremented? Is it immediate? Is it before the next operation is done?

The increment is not done immediately. C specifies certain points before which this (these kinds of side-effects) will be completed. As normally expected all operators in C doesn't form this points (as in the case of Java) and the obvious reason is to make C code run faster. And these points are called "Sequence points" in C.

Let's start with an example:

i = 0;
x = x++;

Will this make x = 0 or x = 1?

We all know the precedence rule and what post increment does (returns the value and then increment the operand). So , lets apply that:

x = (x++);

x = 0; and x will be incremented.

But the problem starts. 

In any text book you would have read till this. But when will x be incremented? Is it immediate? Is it before the next operation is done?

The increment is not done immediately. C specifies certain points before which this (these kinds of side-effects) will be completed. As normally expected all operators in C doesn't form this points (as in the case of Java) and the obvious reason is to make C code run faster. And these points are called "Sequence points" in C.