万能百科  > 所属分类  > 

有以下程序 #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)的替换文本展开后就变为:x*N+1形式);与上相同i2在引用带参的宏名并替换展开后变为: i2=1+1*N+1=1+1*5+1=7,所以答案选B。

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签