求助:一个C语言读程序题.

来源:百度知道 编辑:UC知道 时间:2024/05/26 09:04:34
#define f(x) x*x
main()
{
int i;
i=f(4+4)/f(2+2);
Printf(“%d\n”,i);
}
程序输出结果为28,为什么是28?

宏替换是字符级的替换,不负责运算的,会产生所谓的边际效应,这里i=f(4+4)/f(2+2);被替换成i=4+4*4+4/2+2*2+2;这样再算它就是28了。
解决的方法也有,这样写就好了:#define f(x) (x)*(x)