写结果的...求助了

来源:百度知道 编辑:UC知道 时间:2024/06/22 23:57:24
#define PLIS(A,B)A+B
main()
{int a=1,b=2,c=2,sum;
sum=PLUS(++a,b++)/c;
printf("sum=%d\n",sum);}
这题我得2。。答案是3。++a不是2么。b++得2
(2+2)/2不得2么。。各位帮我看看哪有问题谢谢

这是宏替换的一个问题
这一句应是这样的
#define PLUS(A,B)A+B
将PLUS(A,B)照原样替换,即为A+B
再到sum=PLUS(++a,b++)/c;中替换,为:
sum=++a+b++/c;(注意宏替换是原样替换)
这样sum=2+2/2当然sum==3啊