2020-4-21
#define a(x) x;x;x;
如有定义:
#include <stdio.h>
#define a(x) x;x;x;
void main()
{
a(printf("w"));
/* 因为a(x) 就是 x;x;x; 宏定义只是替换
* a(字) 字;字;字;
* 所以a(printf("w"));就是printf("w");printf("w");printf("w");
* 结果:www
*/
a( a(printf("w ")) );
/* 一个a(x) 是x;x;x;
* 那么外边那圈a(x;x;x;) 就是相当于 x;x;x; x;x;x; x;x;x; 即 3*3
* 也就是说有3*3个printf("w ");
* 结果:w w w w w w w w w
*/
}
例:不用循环(for while)输出100以内的所有正整数
#include <stdio.h>
#define a(x) x;x;x;x;x;x;x;x;x;x;
void main()
{
int n=0;
a( a(printf("%d ",n++)) );
//10*10次printf("%d",n++);
}


393

被折叠的 条评论
为什么被折叠?



