#define SQR(X) X*X #include void main(){ int a=16,k=2,b=4,m=1 ; a/=SQR(k+m)/SQR(k+m); pri

问题描述:

#define SQR(X) X*X #include void main(){ int a=16,k=2,b=4,m=1 ; a/=SQR(k+m)/SQR(k+m); pri
#define SQR(X) X*X
#include
void main(){
int a=16,k=2,b=4,m=1 ;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
为什么?

宏定义有替代的意思.
SQR(k+m)/SQR(k+m)展开后,变成k+m*k+m/k+m*k+m,显然,这不是你想要的结果.
正确的宏定义是:
#define SQR(x) (x)*(x)不,这就是个选择题,它就是故意没有加括号的............答案等于多少啊??????你按我展开给你的等式算算就知道.了解,展开的时候弄错了,,,,,,,,,,,,呵呵.......谢谢啊 采纳了!!!