Welcome

首页 / 软件开发 / C语言 / 宏定义的使用

宏定义的使用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语言的宏命令,会秒懂更多东西。