问题
单项选择题
有以下程序:
#define f(x) (x*x)
main()
int i1,i2;
i1=f(8)/f(4);i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);
程序运行后的输出结果是
A) 64, 28
B) 4,4
C) 4,3
D) 64, 64
答案
参考答案:C
解析: 本题考查的是宏定义。对带参数的宏的展开只是将语句中宏名后面括号内的实参字符串代替#define命令行中的形参。本题中“i1=f(8)/f(4)”用“#defme f(x)(x*x)”代替得i1=(8*8)/(4*4),结果为4;“i2=f(4+4)/f(2+2)”用“#define f(x)(x*x)”代替得i2=(4+4*4+4)/(2+2*2+2),求得结果为3。故本题输出的值为4,3。