下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是:[ ]。 t4.h的源程序为: #define N 10 #define t2 (x) (x*N) t

admin2013-06-11  28

问题 下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是:[  ]。
        t4.h的源程序为:
        #define   N    10
        #define   t2 (x)  (x*N)
        t4.c 的源程序为:
        #include   <stdio.h>
        #define    M     8
        #define    f(x)  ((x)*M)
        #include    "t4.h"
        main()
        {int  i,j;
        i=f(1+1);   j=f2(1+1);
        printf("%d%d\n",i,j);
        }

选项

答案16  11

解析 在编译时预处理程序用“替换文本”来替换宏,并用刘应的实参来替换“替换文本”。此题中的替换文本分别为:x*N、(x)*M。弓,用带参的宏名i=f(1+1),在经过宏替换后将成为:i=(1+1)*M=2*8=16。与上相同j在引用带参的宏名并替换展开后变为;j=1+1*N=1+1*10=11(注:因为在对宏f2(x)的替换中x没有加括号,所以对宏f2(x)的替换文本展开后就变为:1+1*N形式),所以答案为16 11。
转载请注明原文地址:https://kaotiyun.com/show/qCJp777K
0

最新回复(0)