[求助] 宏替换
#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);
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
哦了,这个就是过程