C语言 关于预处理的小问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:28:52
有一道分析题,让求出运行结果,程序是这样的:
#define SQR(x) x*x
#define ADD(a,b) a+b
main()
{int a=2,b=3,c;
c=ADD(SQR(a),SQR(b));
printf("%d\n",c);}
结果是什么?高手帮忙分析下,谢了!!

c=ADD(SQR(a),SQR(b))
=SQR(a)+SQR(b)
=a*a+b*b
=2*2+3*3
=4+9=13
宏定义的时候直接代进去就可以。千万不要加任何的()。就OK

首先记住一点,宏只是单纯的代码替换
c=ADD(SQR(a),SQR(b));
=SQR(a)+SQR(b)
=a*a+b*b
=2*2+3*3=13

因此最后的结果是输出13