#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d\n",a); }为什么输出a是1而不是10呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 10:14:34
#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(

#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d\n",a); }为什么输出a是1而不是10呢?
#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d\n",a); }
为什么输出a是1而不是10呢?

#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d\n",a); }为什么输出a是1而不是10呢?
按你的理解应该是
a/=((2+1)*(2+1))/((2+1)*(2+1))
是吧
其实
宏只是文本替换,不是像公式一样
宏展开后类似于这样
a /= k+m*k+m/K+m*k+m;
a / = 2+1 * 2 +1/2+1*2+1;
a/ =7;
a= 10/7 = 1;
整数除法,忽略小数