c语言问题不会,求指点

#define P 3
#define S(a) P*a*a
main()
{
int ar;
ar=S(3+5);
printf ("\n%d",ar);
}
为什么输出的结果是29,求指点。。。

宏会完全替换,也就是说s(3+5)会被替换为
3*3+5*3+5先算乘法,结果就是9+15+5,所以结果就是29追问

没有理解为什么是3*3+5*3+5?

追答

纯粹的替换,直接用括号里边的参数代替就行了,宏定义的时候是没有括号的,所以替换后也是没有括号的。

追问

3*3是不是就是P*3,但是S(a)是P*a*a呢,表示还没看懂,我是C语言初学者,还望耐心指教

温馨提示:答案为网友推荐,仅供参考