#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語言的宏命令,會秒懂更多東西。