国际C语言混乱代码大赛(IOCCC)是一项年度竞赛,自1984年以来一直延续至今。它由Landon Curt和Larry Bassel在USENET上举办,冬天接收参赛作品,春天评判,夏天公布获胜者。
1988年的获胜者是cdecl程序的一个混乱版本,作者是Gopi Reddy。回想一下,非混乱的cdecl代码大概是150行,而混乱版本的代码只有12行。
下面就是混乱代码:
#include<stdio.h>
#include<ctype.h>
#define w printf
#define p while
#define t(s) (W=T(s))
char*X,*B,*L,I[99];M,W,V;D(){W==9?(w("`%.*s' is
",V,X),t(0)):W==40?
(t(0),D(),t(41)):W==42?(t(0),D(),w("ptr to ")):0;p(W==40?(t(0),
w("func returning "),t(41)):W==91?(t(0)==32?(w("array[0..%d]
of ",
atoi(X)-1),t(0)):w("array of "),t(93)):0);}main(){p(w("input:
"),
B=gets(I))if(t(0)==9)L=X,M=V,t(0),D(),w("%.*s./n/n",M,L);}T(s)
{if(!s||s==W)
{p(*B==9||*B==32)B++;X=B;V=0;if(W=isalpha(*B)?9:isdigit(*B)?32
:*B++)
if(W<33)p(isalnum(*B))B++,V++;}return W;}
你能读懂吗?