选择题
有以下程序
#include<stdio.h>
#define S1(z)4*z+4*(z)
#define s2(x,y)4*(x)*(y)+y*x
main()
{int a=1,b=2;
printf('%d,',S1(a+b));
printf('%d,',S2(a,b)+S1(3));
printf('%d',S2(3+a,b+3));
}
程序执行后的输出结果是______。
A、
18,34,100
B、
24,34,92
C、
24,34,100
D、
18,34,92
【正确答案】
D
【答案解析】
程序中S1和S2都是宏定义,所以S1(a+b)宏展开后的表达式为:4*a+b+4*(a+b),即4*1+2+4*(1+2),结果为18;S2(a,b)宏展开的表达式为:4*(a)*(b)+b*a,即4*(1)*(2)+2*1,结果为10;S1(3)宏展开后的表达式为:4*3+4*(3),结果为24;S2(3+a,b+3)宏展开的表达式为:4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,结果为92,本题输出:18,34,92,答案为D。
提交答案
关闭