A-A+

有以下程序 #define f(x) (x'x) main () { int i1 i2;

2022-08-06 00:48:16 问答库 阅读 174 次

问题详情

有以下程序 #define f(x) (x"x) main () { int i1, i2; i1=f (8) /f(4); i2=f (4+4) /f (2+2); printf("%d, %dn" ,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。

考点:程序