据说以下程序是刻隆程序中最短小精干的,而且它符合C标准(编译时有warning)
main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}
刻隆:程序运行的结果就是输出程序本身(自己的代码);
小解释一下:
main(a)中a是一个char类型的指针
printf中,参数为a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34
a="main(a){printf(a,34,a=%c%s%c,34);}"相当于对a进行赋值操作;
其实printf就相当于
printf("main(a){printf(a,34,a=%c%s%c,34);}",34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);
总共4个参数,后三个参数按第一个参数的%c%s%c进行格式化输出(注意34是分号的ASCII码)
这个程序太经典了!
附程序编译及运行结果:
Qdieyou@qdieyou /cygdrive/e/gcc
$ gcc -o self self.c
self.c: In function `main':
self.c:1: warning: assignment makes integer from pointer without a cast
self.c:1: warning: passing arg 1 of `printf' makes pointer from integer without
a cast
self.c:1:65: warning: no newline at end of file
Qdieyou@qdieyou /cygdrive/e/gcc
$ ./self
main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}