#define SQR(X) X*X main() { int a=16, k=2, m=1; a/=SQR(k+m)/SQR...
发布网友
发布时间:2024-10-21 21:41
我来回答
共2个回答
热心网友
时间:2024-11-10 07:44
写程序结果吗,我先把源代码给你添加上换行如下:
#define SQR(X) X*X
main() { int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n”,a); }
先做宏替换,把语句中的SQR(x)替换为x*x,特别注意,简单替换,不添加任何括号,替换后为:
main() { int a=16, k=2, m=1;
a/=k+m*k+m/k+m*k+m;
printf("%d\n”,a); }
现在我们来计算a值语句替换所有变量为数值:
a /= 2+1*2+1/2+1*2+1;
不知道我老眼昏花是否替换错,这个第一步计算乘除后为(注意1/2的值是0):
a /= 2+2+0+2+1;
a/=7;
除法之前a值16,而16/7=2,因此执行后a值是2,程序输出结果是2
热心网友
时间:2024-11-10 07:46
你要理解宏展开过程
SQR(k+m)展开后等于k+m*k+m,不是(k+m)*(k+m),所以宏要写成
#define SQR(X) (x) * (x)