有以下程序 #include #define N 5 #define M N+1
有以下程序 #include <stdio.h> #define N 5 #define M N+1 #define f(x) (x*M) main() { int i1,i2; i1=f(2) i2=f(1+1); printf("%d %d\n",i1,i2); } 程序的運(yùn)行結(jié)果是______。
A.12 12
B.11 7
C.11 11
D.12 7
正確答案:B解析:在編譯時(shí)預(yù)處理程序用“替換文本”來(lái)替換宏,并用對(duì)應(yīng)的實(shí)參來(lái)替換“替換文本”。此題中的替換文本分別為: N+1、(x*M)。引用帶參的宏名i1=f(2),在經(jīng)過宏替換后i1=2'N+1=2'5+1=11(注:因?yàn)閷?duì)宏M的替換中N+1沒有加括號(hào),所以對(duì)宏f(x)的替換文本展開后就變?yōu)椋簒*N+1形式);與上相同i2在引用帶參的宏名并替換展開后變?yōu)椋?i2=1+1*N+1=1+1*5+1=7,所以答案選B。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。