Firstly, you have psoted this in the C/C++ Articles forum. Please do not do that. Questions are to be posted in the C/C++ forum.
Secondly, the output is indeterminate. That is, it will vary based on compiler.
This is due to code like this:
i = ++i * ++i * ++i * ++i;
The variable i is being modified more than once in the same statement. The compiler is not bound to evaluate this in any particular order. Some compilers may go right to left while others go left ot right while others may do the ++ first (since it has precedence) and then do the multiply.