#include <stdio.h>
#include <stdlib.h>
void main(int j) {
printf("%d\n", j);
(main + (exit - main)*(j/1000))(j+1);
}
解释:
j因为是个参数,main函数在无参数调用时会被初始化为1,当j从1增长到1000的时候,j/1000会从0变为1,(exit - main)是main函数和exit函数的地址差值,也就是说j到1000之前,(main + (exit - main)*(j/1000))即是main(),到1000的时候就调用exit()了。
这个程序开始运行时候会一直调用main(),递归999次,增长j并打印,然后调用exit()。