当前位置: 代码迷 >> C语言 >> [求助] 宏替换
  详细解决方案

[求助] 宏替换

热度:215   发布时间:2006-08-19 23:38:40.0
[求助] 宏替换

#include "stdio.h"

# define sqr(x) x*x
main()
{
int a,k=3;
a=++sqr(k+1);
printf("%d\n",a);

}


这里出来的为什么是9不是8?

搜索更多相关的解决方案: sqr  int  main  define  

----------------解决方案--------------------------------------------------------
以下是引用JENNET在2006-8-19 23:38:40的发言:

#include "stdio.h"

# define sqr(x) x*x
main()
{
int a,k=3;
a=++sqr(k+1);//++k+1*k+1;k原本是3,但++k以后变成了4,于是这个式子成了4+1*4+1=9
printf("%d\n",a);

}


这里出来的为什么是9不是8?


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

以下是引用JENNET在2006-8-19 23:38:40的发言:

#include "stdio.h"

# define sqr(x) x*x
main()
{
int a,k=3;
a=++sqr(k+1);
printf("%d\n",a);

}


这里出来的为什么是9不是8?

因为宏定义只是表达式的替换罢了,
所以这个式子应该是
a=++k+1*k+1
++k先为4,k后为4
所以
a=4+4+1=9
哦了,这个就是过程
----------------解决方案--------------------------------------------------------
因为 ++sqr(k+1)=++k+1*k+1=4+3+1=8
只是我个人的理解
----------------解决方案--------------------------------------------------------
不好意思打错了
西西
----------------解决方案--------------------------------------------------------

  相关解决方案