一条对++颇有高深见解的请进,该如何处理

一条对++颇有高深见解的请进
#include   <stdio.h>    
main()    
{  
int   a=1,b=1,c=1;
a=a+++b+++c;
printf   ( "%d ",a);
}  
结果为:4     (这个本人可以理解)

#include   <stdio.h>    
main()    
{  
int   a=1,b=1,c=1;
a=a++;
printf   ( "%d ",a);
}  
结果为:1.  
(为什么会是1,不是2?
既然a=a+++b+++c等价于a=a+b=c;a++;b++;那a=a++就应该等价于a=a;a++;可是结果为什么会是1   ??)
望高手解答!


------解决方案--------------------
int r,i=0;
r = i++; //先取值再自加 r此时为0 i为1
r = ++i; //先自加再取值 r此时为2 i同样是2

取值你也可以理解成赋值给r。我只是习惯这么说罢了。
------解决方案--------------------
这个++的问题还算有点合情理......
=保证右侧表达式在赋值前执行完毕
a++保证在含a++的表达式执行完之后对a赋值
可没保证在赋值完以后再自增
------解决方案--------------------
编译的时候好像是有个贪婪原则的还是什么的,忘记了

a=a+++b+++c;

a=(a++) + (b++) + c
首先a = a + b + c = 3;接着是a++,于是a变成4,b变成3

至于a=(a++),先是a=a,接着a++,结果是2,不是1
我不知道您用的什么compiler,至少我vc2005, 结果是2
------解决方案--------------------
说错
首先a = a + b + c = 3;接着是a++,于是a变成4,b++变成2。打错了,困-。-
------解决方案--------------------
VC 6.0 =2.