有以下程序        #include  <stdio.h>        #define  N  5        #define  M  N+1          #define  f(x)  (x*M)         main()       

admin2009-03-16  12

问题 有以下程序        #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。
转载请注明原文地址:https://kaotiyun.com/show/meXp777K
0

最新回复(0)