这道题就是看不明白

问题描述:

这道题就是看不明白
(38)有以下程序
#definef(x)x*x
main( )
{int i;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
执行后输出结果是
A) 28 B) 22 C) 16 D) 4
答案28

c语言中在用#define定义宏的时候,很容易出错的.本程序中#define f(x) x*x使得f(x)等价于 x*x.而f(4+4)/f(2+2); 则等价于4+4*4+4/2+2*2+2=4+16+2+4+2=28.我想这不是编程者本人的意思.加个括号就好了.如下:#define f(...