宏定义的使用2015-02-23#define N 3#define Y(n) ((N+1)*n)printf("%d
", 2*(N+Y(5+1)));的结果是多少?不是很简单么当然是2*(3+4*6) = 54么,恭喜你错了。请继续想清楚再往后看。首先N = 3;那么先把所有用到N的地方都换成3现在是#define Y(n) ((N+1)*n) -> Y(n) (4*n)然后关注表达式:2*(N+Y(5+1))2*(N+Y(5+1)) -> 2*(3+Y(5+1))Y(5+1) -> 4*5+1所以,2*(3+Y(5+1)) -> 2*(3+4*5+1) -> 48重点就在于这个宏命令,不要想当然的先计算,后代入。豁然开朗的继续去查查C语言的宏命令,会秒懂更多东西。