#define N 3
#define Y(n) ((N+1)*n)
printf("%d\n", 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语言的宏呼吁,会秒懂更多对象。