#include "stdio.h"
# define sqr(x) x*x
main()
{
int a,k=3;
a=++sqr(k+1);
printf("%d\n",a);
}
这里出来的为什么是9不是8?
----------------解决方案--------------------------------------------------------
#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?
----------------解决方案--------------------------------------------------------
#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
只是我个人的理解
----------------解决方案--------------------------------------------------------
不好意思打错了
西西
----------------解决方案--------------------------------------------------------