#include "stdio.h"
# define sqr(x) x*x main() { int a,k=3; a=++sqr(k+1); printf("%d\n",a); }
这里出来的为什么是9不是8?
# 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); }
因为宏定义只是表达式的替换罢了,所以这个式子应该是a=++k+1*k+1++k先为4,k后为4所以a=4+4+1=9哦了,这个就是过程