问题
单项选择题
有一个名为init.txt的文件,内容如下: #define HDY(A,B) A/B #define PRINT(Y) printf("y=%d\n",Y) 有以下程序 #include"init.txt" main() { int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k); } 下面针对该程序的叙述正确的是
A.编译出错
B.运行出错
C.运行结果为y=0
D.运行结果为y=6
答案
参考答案:D
解析: 本题考查的是带参数的宏定义。不仅要进行简单的字符替换,还要进行参数替换。根据宏替换的规则,本题在进行替换宏HDY时,没有像所希望的那样将HDY(a+c,b+d)替换成(a+c)/(b+ d),而是替换成了“a+c/b+d”,因此结果k为6。