问题 填空题

下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是: [18] 。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。

单项选择题
单项选择题