Anciant Dragon has given the answer of question you've asked, you asked for What is the Execution Sequence you didn't ask How to find out the execution sequence.
Let me teach you how to find it out.
void EatSpace(char* Pbuffer)
{
int i = 0;
int j = 0;
while((*(Pbuffer + i) = *(Pbuffer + j++)) != '\0')
if (*(Pbuffer + i) != ' ')
i++;
}
when the above funciton is called, Compilers will push the PTR Puffer on stack then push the Local variables i and J on the stack.
now the interesting part.
while((*(pbuffer+i) = *(pbuffer + j++)) != 0)
assignement operator are evaluatted from right to left.
so the above code can be broken as follows
*(pbuffer + j++) the above expression is evaluated as follows
take the address of pbuffer add j to its contents and derefer the complete value. increment the j for next execution
you will get some character in that case aren't you?
assign that character to lvalue which is
*(pbuffer + i) you can break the above statement now,
lets say right value calculated as 'C' you assign it to left handside so the right handside become 'C' as well which is not equal to '\0'
isn't it
always remember one thing there is still a world ahead
a more better explanation can be provided to you but the thing is that you don't know the assembly and compilers. Sometimes experts like Anciant Dragon doesn't explain the very minor details because either they are irrelevant to you or more advance so that you can't grasp them. be patient just take a hint and dig it out yourself one day you'll learn why Anciant doesn't tell you the complete story.