有下列程序  #include<stdio.h>  #define S1(x,y)x*y  #define S2(x,y)(x)*(y)  main()  { int a=2,b=5;   printf("%d,%d,%d,%d",S1(a+b,a+

admin2022-04-02  26

问题 有下列程序
 #include<stdio.h>
 #define S1(x,y)x*y
 #define S2(x,y)(x)*(y)
 main()
 {  int a=2,b=5;
    printf("%d,%d,%d,%d",S1(a+b,a+b),S1(a+b,b+a),S2(a+b,a+b),S2(a+b,b+a));
 }
 程序执行后的输出结果是(          )。

选项 A、17,17,49,49
B、17,29,49,49
C、29,29,49,49
D、49,49,49,49

答案B

解析 对于题意中的宏,替换如下:
 S1(a+b,a+b)等价于:a+b*a+b,即2+5*2+5,等于17;
 S1(a+b,b+a)等价于:a+b*b+a,即2+5*5十2,等于29;
 S2(a+b,a+b)等价于:(a+b)*(a+b),即(2+5)*(2+5),等于49;
 S2(a+b,b+a)等价于:(a+b)*(b+a),即(2+5)*(5+2),等于49;
 本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/hhkp777K
0

最新回复(0)