有下列程序: #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+

admin2022-06-24  21

问题 有下列程序:
#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),即P(2+5)*(5+2),等于49。本题答案为B选项。
转载请注明原文地址:https://jikaoti.com/ti/Jyd0FFFM
0

最新回复(0)