#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); }为什么?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 21:49:00
#defineSQR(X)X*X#includevoidmain(){inta=16,k=2,b=4,m=1;a/=SQR(k+m)/SQR(k+m);pri#defineSQR(X)X*X#incl

#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); }为什么?
#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);
}
为什么?

#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)