急!~~~~想知道为什么

来源:百度知道 编辑:UC知道 时间:2024/05/12 18:00:40
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d\n",S(i+j));
}

说说路径吧!!!!
谢谢!
但是输出答案为81 啊
我也郁闷!!!
注意输出结果是81

预编译器不进行计算 而只进行简单的字符串替换
上式解释成

4 * i + j * i + j +1
即 4 * 6 + 8 * 6 + 8 + 1 == 81

printf("%d\n",S(i+j))执行时,S(i+j)将赋值S(6+8);根据宏#define S(x) 4*x*x+1 的定义,自动替换代码为4*6+8*6+8+1=81,然后打印出81

-----
如果你要正常使用这条宏,应该这么用
#define S(x) 4*(x)*(x)+1