那:
#define f(x) x*X
main()
{
int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
中: i=f(4+4)/f(2+2);
我认为根据f(4+4)和f(2+2)该写成:[(4+4)*(4+4)]/[(2+2)*(2+2)]吧
----------------解决方案--------------------------------------------------------
毛!
快点来解答一下我楼上的这个问题.
我也搞不懂!
----------------解决方案--------------------------------------------------------
怎么还没明白呢?
f(4+4)即:把4+4直接取代宏定义中的x
就成了4+4*4+4
----------------解决方案--------------------------------------------------------
那f(8)!=f(4+4)???
----------------解决方案--------------------------------------------------------
f(8)=8*8
f(4+4)=4+4*4+4
你觉得相等不嘛?
----------------解决方案--------------------------------------------------------
宏的确切意思就是说
你想省事,比如不想在写一个函数的变量的时候写4+4
所以你定义了一个宏
它进行的是字符串的替代
就是简单的把x变成4+4
它不给加括号的
所以想得到正确的结果
定义的时候应该这样
#define f(x) (x)*(x)
这样替换以后就是数学上正确的式子了
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
以下是引用cherrysindow在2005-12-9 16:52:00的发言:
宏的确切意思就是说
你想省事,比如不想在写一个函数的变量的时候写4+4
所以你定义了一个宏
它进行的是字符串的替代
就是简单的把x变成4+4
它不给加括号的
所以想得到正确的结果
定义的时候应该这样
#define f(x) (x)*(x)
这样替换以后就是数学上正确的式子了
宏的确切意思就是说
你想省事,比如不想在写一个函数的变量的时候写4+4
所以你定义了一个宏
它进行的是字符串的替代
就是简单的把x变成4+4
它不给加括号的
所以想得到正确的结果
定义的时候应该这样
#define f(x) (x)*(x)
这样替换以后就是数学上正确的式子了
这个讲的真的是非常透彻啊
----------------解决方案--------------------------------------------------------
i=f(4+4)/f(2+2) 我的理解是 4+4*4+4/2+2*2+2=28
我想因该是这吧
----------------解决方案--------------------------------------------------------
明白:)
----------------解决方案--------------------------------------------------------