c语言运算:结果为什么是8!

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:36:58
#define S(x) 4*x*x+1
main()
{ int i+6,j+8;
printf("%d\n",S(i+j));
}
为什么是81,题目打错了!

我知道你的疑惑了.你那个打错了吧,应该是赋值语句吧:i=6,j=8;
首先,你可能将宏定义理解成是4与x的平方相乘再加1,这不错.但接着你就将(i+j)当作一个整体带入,这里就开始出问题了!
为什么呢?宏定义实际上就是一个方便的省略代换语句.但关键是代换的时候必须与宏定义中的语句一致.
题目中要求输出的是S(i+j),那我们就将i+j代入宏定义语句中,注意哦:
S(i+j) 4*i+j*i+j+1 (别以为少了括号哦,因为求的是S(i+j),不是S((i+j))哦)
然后我们将i=6,j=8;代入,即4*6+8*6+8+1,按照乘法优先的原则计算,结果不正是81吗.懂了吗?

我觉得不应该是8。。。