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(x) ((x)*(x)) .
注意在用#define定义宏的时候,最好每个变量都加一个括号,然后整体在加个括号,这样就不会出错了.
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(x) ((x)*(x)) .
注意在用#define定义宏的时候,最好每个变量都加一个括号,然后整体在加个括号,这样就不会出错了.