当我定义这个宏时:
#define SQR(x) x*x
让我们说这个表达式:
SQR(a+b)
此表达式将被宏替换,如下所示:
a+b*a+b
但是,如果我++
在表达式之前放置一个运算符:
++SQR(a+b)
现在的表情是什么样的?这是++
放置在 SQR 参数的每个部分之前吗?像这样:
++a+b*++a+b
这里我给出一个简单的程序:
#define SQR(x) x*x
int a, k = 3;
a = SQR(k+1) // 7
a = ++SQR(k+1) //9