宏中的 ## 运算符如何工作?

How ## operator in macro works?

我正在研究一些宏操作,我得到了这段代码,但我无法弄清楚这段代码实际上是如何工作并生成输出的?是否存在任何 (i-+) 运算符? 这是代码

#include<stdio.h>
#define p(a,b) a##b 
#define call(x) #x 
int main()
{ 
   do{ int i=14,j=3; 
   printf("%d",p(i-+,+j)); 
}while(*(call(625)+3)); 
return 0; 
} 

输出为10。 如果你用一些例子来解释它会很有帮助。

宏中的##是连接运算符,它将操作数粘合在一起。所以在预处理器完成后,该表达式将是

i-++j

这当然意味着 i - (++j),即 14 - 4 当然是 10