对++演算结果的疑问

对++运算结果的疑问
如下代码:
#include <Stdafx.h>
void main()
{
   int i = 1 ;
   int p ;
   p = (++i) * (++i)  ;
   printf("The result is %d\n",p) ;
   printf("The var  I is %d\n",i) ;
}

运行后结果是 p = 9 ; i = 3 ;

但是我对p的结果不理解,p = (++i) *(++i),
先算乘号左边 ++i 表达式++i的值= 2 ,i = 2 
然后算右边的++i表达式,表达式++i的值=3,i =3 ;
最后做乘法 p= 2*3 = 6 , i = 3 ;但是结果P却是9~~为什么?请描述程序执行顺序

------解决方案--------------------
看置顶贴六字符
------解决方案--------------------
不同的编译器可能结果不会不同
应该避免这种用法,也不要试图在未知环境中预测这种用法的行为
------解决方案--------------------
不要在纠结这个问题了.
没有意义.
不同编译器,结果可能会不同.
不要在同一个语句,出现多个++或者--.不仅晦涩难懂,还易出错.
------解决方案--------------------
这个还是不要写这样的程序,这个结果和编译器有关,不同的编译器会有不同的结果。
------解决方案--------------------
为何把有限的声明浪费到没有定义的 behavior 上