求一c语言问题,菜鸟请教

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:11:49
在c语言预处理的宏定义中,出现这样的情况
#include(stdio。h)
#define S(x) x*x
viod main()
{
int a,b,c;
a=5;b=8;
c=S(a+b);
printf("%d",c);
}
为什么c的值是53而不是169

楼主请注意。宏定义的时候直接代进去就可以了。千万别乱加括号。
S(a+b)=a+b*a+b=5+5*8+8=53...
切记,直接代进去,别乱加括号
要加括号应该这样
#define S(x) (x)*(x)

a + b * a + b 结果是多少? 算算看

这种问题每本书上讲宏的部分都会有例子, 看书的时候别茫然啊

是这么算的
你定义的宏 #define S(x) x*x
c=S(a+b);等价于c=a+b*a+b = 5+5*8+8=53
并不是(a+b)*(a+b)

你应该在a*b那里加一个括号。要不他是这样算的5+8*5+8