#define M(a,b)a*b

来源:百度知道 编辑:UC知道 时间:2024/06/19 14:19:15
#define M(a,b)a*b
main()
{int x=3,y=2,s1,s2;
s1=M(x+y,x-y);
s2=M(x-y,x+y);
printf("%d,%d",s1,s2);
getch();
}
ba帮忙解释下

这点事好好看看书都有讲的

define就是按字面意义替换,替换完了就是

s1 = x+y*x-y;
s2 = x-y*x+y;
结果是什么自己算吧

这个是宏定义的问题:
M(a,b)a*b
M(a,b)(a)*(b)
这两个是不同的。

所以:
s1 = x+y*x-y=7;
s2 = x-y*x+y=-1;

如果宏这样定义:
#include M(a,b) (a)*(b)
那么:
s1 = (x+y)*(x-y)=5;
s2 = (x-y)*(x+y)=5;