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

admin2022-10-24  18

问题 有以下程序
 #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都是宏定义。Sl(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选项。
转载请注明原文地址:https://kaotiyun.com/show/zJkp777K
0

相关试题推荐
随机试题
最新回复(0)