有以下程序 #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); } 程序的運行結果是______。
A.12 12
B.11 7
C.11 11
D.12 7
正確答案:B解析:在編譯時預處理程序用“替換文本”來替換宏,并用對應的實參來替換“替換文本”。此題中的替換文本分別為: N+1、(x*M)。引用帶參的宏名i1=f(2),在經過宏替換后i1=2'N+1=2'5+1=11(注:因為對宏M的替換中N+1沒有加括號,所以對宏f(x)的替換文本展開后就變?yōu)椋簒*N+1形式);與上相同i2在引用帶參的宏名并替換展開后變?yōu)椋?i2=1+1*N+1=1+1*5+1=7,所以答案選B。
詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域專業(yè)人士。