楼主,……我都看到有人给解释的很具体了,既然你强烈要求,我再来解释一下……
main()
{
int a=5,b=5,c,d;
c=(--a)-(--a)+(a--);
d=(--b)-(b--)+(--b);
printf("%d\n%d\n%d\n%d\n",c,d,a,b);
}
是这样的……
对于c的值,系统把2个(--a)和一个(a--)放在一起编译,先运行一次--a,这时a的值先自减一次,所以这时a=4,然后运行第二个--a,这时a=3,最后运行a--,注意,这时a的值不自减,因为你还没用到a--的值,所以a还是3,而--a和a--表达式的值也是3,因为它们本质上也是a的值,只是在得出a的值之前或者之后自减罢了,所以c=3-3+3=3,因为这时用到了a--的值,所以a再自减一次,所以最后a=2……
d的值楼主自己分析吧……
不知能理解否……
欢迎楼下补充……