#define Tap(X) 2*X+1 main() {int a=6,k=2,m=1; a+=Tap(k+m); printf("%d\n",a); } 为什么我算的是13啊

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 00:05:17

#define Tap(X) 2*X+1 main() {int a=6,k=2,m=1; a+=Tap(k+m); printf("%d\n",a); } 为什么我算的是13啊
#define Tap(X) 2*X+1 main() {int a=6,k=2,m=1; a+=Tap(k+m); printf("%d\n",a); }
为什么我算的是13啊

#define Tap(X) 2*X+1 main() {int a=6,k=2,m=1; a+=Tap(k+m); printf("%d\n",a); } 为什么我算的是13啊
a=12
因为a+=Tap(k+m)展开宏后得到
a+=2*k+m+1
如果错了你就应该将宏写为
#define Tap(X) 2*(X)+1

(2+1)*2+1+6=13
没错,是13

13
a=2*(2+1)+1+6

12
a+=Tap(k+m);
这句相当于a=a+(Tap(k)+m)
a=6+(2*2+1)+1)
a= 12