第九章编译预处理9
1 选择题【题 9
1】以下叙述中不正确的是
A) 预处理命令行都必须以#号开始B) 在程序中凡是以#号开始的语句行都是预处理命令行C) C 程序在执行过程中对预处理命令行进行处理D) 以下是正确的宏定义#defineIBM_PC【题 9
2】以下叙述中正确的是
A) 在程序的一行上可以出现多个有效的预处理命令行B) 使用带参的宏时,参数的类型应与宏定义时的一致C) 宏替换不占用运行时间,只占编译时间D) 在以下定义中 CR 是称为“宏名”的标识符#defineCR045题 9
3】请读程序:#defineADD(x)x+xmain(){intm=1,n=2,k=3;intsum=ADD(m+n)*k;printf(“sum=%d”,sum);}上面程序的运行结果是
A) sum=9B)sum=10C)sum=12D)sum=18【题 9
4】以下程序的运行结果是
#defineMIN(x,y)(x)〈(y)
(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf(“%d\n”,k);}A)10B)15C)100D)150【题 9
5】在宏定义#definePI3
14159 中,用宏名 PI 代替一个A) 常量 B)单精度数 C)双精度数 D)字符串【题 9
6】以下程序的运行结果是
#include#defineFUDGE(y)2
84+y#definePR(a)printf(“%d”,(int)(a))#definePRINT1(a)PR(a);putchar(‘\n')main(){intx=2;PRINT1(FUDGE(5)*x);}A)11B)12C)13D)15【题 9
7】以下有关宏替换的叙述不正确的是
A)宏替换不占用运行时间 B)宏名无类型C)宏替换只是字符替换 D)宏名必须用大写