问题 单项选择题

有以下程序
#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

解析: 本题考查的是带参数的宏。宏替换与函数调用不同,前者是字面上的,在编译期间完成,后者是内容上的,在运行期间才进行。题目中第1条要替换的语句i1=(8)/f(4);展开后是i1=(8*)/(4*4);结果使i1=4.而第2条语句i2=f(4+4)/f(2+2);展开后为i2=(4+4*4+4)/(2+2*2+2);结果使i2=24/8=3。故应该选择C。

选择题
单项选择题