当前位置: 代码迷 >> C语言 >> [求助]这个程序怎么解啊?要过程
  详细解决方案

[求助]这个程序怎么解啊?要过程

热度:93   发布时间:2005-12-08 12:57:00.0
那可是如果像版主那样解释的话呢?
那:
#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)



这样替换以后就是数学上正确的式子了

这个讲的真的是非常透彻啊
----------------解决方案--------------------------------------------------------
i=f(4+4)/f(2+2) 我的理解是 4+4*4+4/2+2*2+2=28
我想因该是这吧

----------------解决方案--------------------------------------------------------

明白:)


----------------解决方案--------------------------------------------------------
  相关解决方案