问一道2005年的上海C语言考试的详细解答

发布时间:2024-06-25 14:04 发布:上海旅游网

问题描述:

#define SQR(x) x*x
void main( )
{
int s=8, a=2, b=3;
s=SQR(a+b)*4;
printf(“s=%d\n”, s);
}

为什么答案是20,谢谢各位!

问题解答:

#define SQR(x) x*x

s=SQR(a+b)*4;

展开后及是
a+b*a+b*4;
代入ab的值
2+3*2+3*4 = 20

这里要注意宏的替换。 x是替换成a+b的

带参的宏定义直接展开置换 按照优先序运算
SQR(a+b)*4 展开后相当于 a+b*a+b*4=2+3*2+3*4=20
注意 这里是不带括号的
参看 谭浩强c程序设计第九章
当年做过这个题~~~

热点新闻