Mar 24

      最近突然冒出一个想法:怎样写一个程序,它可以输出自己的源代码?

      我们都写过这个程序:

#include<stdio.h>
main() { printf("Hello, world");}

      它会输出:

Hello, world

      于是很自然地,要写出一个输出自己的程序,可以尝试这样写:

#include<stdio.h>
main() { printf("#include<stdio.h>\nmain() { printf(\"#include<stdio.h>\n main() { ...\") } ");}

      它会输出:

#include<stdio.h>
main() { printf("#include<stdio.h>
main() { ..."
) }

      你可以继续这样写下去,但你会发现自己已经陷入死循环了,写到printf那就得返回去加上一段。显然像上面这样是做不到的。是不是说这样的程序就不存在呢?答案是否定的,不仅写得出来,而且各种各样,五花八门的都有。