#define MIN(x,y) (x)>(y)?(x):(y)
#define T(x,y,r) x*r*y/4
main()
{
int a=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c);
printf("%d,%d",s1,s2);
}
答案:3 28
是正确的;
大家主要的问题是s2为什么是28
x=a++ ,y=a*++b, r=a+b+c
x=3, y=3*4, r=3+4+5
s2=3*3+4+5+3*4/4=9+4+15= 28
大家会问a会什么不变.首先a++是先运算后加1,所以,x=a++=3,,
然后s2=T(a++, a*++b, a+b+c);看清楚了,因为每个式子后面都是逗号,并不是分号,
所以进行a*++b,时,,a还是没有加1,,仍然是3.
[此贴子已经被作者于2006-11-10 20:17:01编辑过]