当前位置: 代码迷 >> C语言 >> 一个关于宏定义的问题
  详细解决方案

一个关于宏定义的问题

热度:312   发布时间:2008-06-14 18:49:36.0
一个关于宏定义的问题
#include<stdio.h>
#define f(x) (x)*(x)
int main(void)
{
    printf("%d\n",f(3+4));
}


#include<stdio.h>
#define f(x) x*x
int main(void)
{
    printf("%d\n",f(3+4));
}


这两个结果为什么不相同呢
搜索更多相关的解决方案: 定义  

----------------解决方案--------------------------------------------------------
#include
#define f(x) (x)*(x) //因为你加了括号,f(3+4)==>(3+4)*(3+4)==>49
int main(void)
{
    printf("%d\n",f(3+4));
}

#include
#define f(x) x*x
int main(void)
{
    printf("%d\n",f(3+4));//这里你没有加括号,所以f(x+4)==>3+4*3+4==>19
}

这两个结果为什么不相同呢? [/quote]
----------------解决方案--------------------------------------------------------
呵呵,云天上了啊。
这个问题就象“(4+5)*(18-27)”和“4+5*18-27”类似。你说,他们相等吗?
----------------解决方案--------------------------------------------------------
所以说。有些时候宏很不安全。。
----------------解决方案--------------------------------------------------------
  相关解决方案