问题 单项选择题

有以下程序:
#include<stdio.h>
#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=f(8)/f(4);展开后是i1=(8*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)。

阅读理解
单项选择题