#define MA(x) x*(x-1) main() {int a=1,b=2; printf("%d",MA(1+a+b));}
结果为什么是8
快来人啊~
这是个宏的展开问题,给你介绍本好书《全国计算机等级考试典型考题解析和实战》 钱贵平 李虎军著
这本书上有很多之中细节问题解释的。
我有个例子
#define sum(x) x*x
sum(i+j)/sum(i+j)
展开是这样 i+j*i+j/i+j*i+j 一般都直接认为就等于1 其实不是
你这样展开就成了1+a+b*(1+a+b-1) 所以是8.
是这样吗?
我没见过阿?
为什么会是这样的情况阿?
可不可以说一下他的原理?