#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+

#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%dn",a); }
为什么输出a是1而不是10呢?
99979q 1年前 已收到1个回答 举报

aizbt 春芽

共回答了14个问题采纳率:92.9% 举报

按你的理解应该是
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;
整数除法,忽略小数

1年前

11
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.028 s. - webmaster@yulucn.com