有个简单的问题,这大学真是白读了涅
#define F(x) x - 2
#define D(x) x*F(x)
printf("%d,%d", D(3), D(D(3))) ;
答案为什么是 7,-13 , 我忘了怎么做了,高手给个解题方法吧。
#define F(x) x - 2
#define D(x) x*F(x)
printf("%d,%d", D(3), D(D(3))) ;
答案为什么是 7,-13 , 我忘了怎么做了,高手给个解题方法吧。
展开后为:
printf("%d,%d", 3*3 - 2, 3*3 - 2*3*3 - 2 - 2) ;
D(3)=3*3-2=7
D(D(3)) =D(3*3-2)=3*3-2*3*3-2-2=-13
#define .........
D(D(3))是这样展开的:
1、D(3)*F(D(3))-2
2、3*F(3)*D(3)-2
3、3*3-2*3*F(3)-2
4、9-2*3*3-2-2=-13
D(D(3))是这样展开的:
1、D(3)*F(D(3))
2、3*F(3)*D(3)-2
3、3*3-2*3*F(3)-2
4、9-2*3*3-2-2=-13
直接替换
对于类函数宏,要永远记住宏是不进行运算的,只是替换!
宏定义都是在程序中直接替换。