曾經(jīng)彭老師一直以為自己C語言掌握的還挺好的,直到看到下面這幾個例子。
例1
首先來看一下,大師是如何求圓周率的,
#include?<stdio.h>
long?a=10000,b=0,c=10000,d,e,f[10001],g;
void?main()
{
????for(;b?!=?c;?f[b++]?=?a/5);
????for(;?d=0,g=c*2,c>5000;?c--,printf("%.4d",e+d/a),e=d%a)
????for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);?
}?
執(zhí)行結(jié)果:
彭老師實在詞窮,
first臥槽
例2
模擬圖靈機打印的斐波納契數(shù)列
#include?<stdio.h>
#define?f?int
#define?v?(void)printf(
#define?x?),exit(1);
#define?y?){if(n)c=z(n,u),u=n,n=c;o[i]=n?'0'+(1&*n):'0';}
#define?z(a,b)?(f*)(~1&*a^(f)b)
#define?k(l)?if(!(l=(f*)malloc(sizeof(l))))v?23+m?x?if(1&(f)l)v?39+m?x*l=
r(p,q,d)f*p,*q;{char?o[81];f*n=p,i=39,*c,*u=d?q:z(p,q);o[40]='0'+(1&*p);
for(;i>=0;i--y?u=d?z(p,q):q;n=p;for(i=41;i<79;i++y?o[i++]='r';o[i++]=0;
v?o);(void)fflush(stdout);sleep(1);}
main(a,c)char**c;{char*u,*malloc(),*m=
"Usage:?black?[string]nNo?more?memorynUnusable?memory?alignmentnjt,s@m@?(beleY%XX&Yz?{z&z}i|R(|)*((.)i)hiniFiGJ%FG.JJgJ:?;;&;z?{z&z}-RS/ROiOV?OP+PsaPh+ijainnjmamfmfAlnnnnphppopv%vvgv.aABiB1/BVP11/1.%..&.OhrR-WV?V1#1VP1CcC0R
nn'CVP0n!nn'nEaEEnEamat!akckk'kwaww'wz,zzozEit?+",
*n=m;f*q,*p=0,*g,b=3,d;
if(a>2)v?m?x?n=a>1?c[1]:n;
/*v"tttttVn");*/
k(q)0;u=n;a=~1&'j';
while(a!='x'){
?/*r(q,p,b);*/
?for(;;u+=3){
??u=?*u?u:n;
??if((~1&*u)==a&&(1&*q)<<1==(2&u[2]))break;
?}
?a=~1&u[1];
?d=(8&u[2])>>3;
?if(16&u[2])putchar(u[3]);
?if(4&u[2])*q|=1;else*q&=~1;
?if(b==d)g=p;else{
??g=z(q,p);
??if(!g){k(g)(f)q;*q^=(f)g;}
?}
?p=q;q=g;b=1-d;
}
/*r(q,p,b);v"n");*/exit(0);
}
執(zhí)行結(jié)果:
double臥槽
例3、
看下下面這個代碼,
第一眼我以為是復(fù)制錯了。
#include?<stdio.h>
main(int?t,int?_,char*?a)
{
return?!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s?%d?%dn"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r?:'d*'3,}{w+K?w'K:'+}e#';dq#'l?q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw'?i;#?){nl]!/n{n#';?r{#w'r?nc{nl]'/#{l,+'K?{rw'?iK{;[{nl]'/w#q#n'wk?nw'?iwk{KK{nl]!/w{%'l##w#'?i;?:{nl]'/*{q#'ld;r'}{nlwb!/*de}'c?;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!?nr'/?')?}+}{rl#'{n'?')#?}'+}##(!!/")
:t<-50?_==*a?putchar(a[31]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc?i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m?.vpbks,fxntdCeghiry"),a+1);
}
但是這個代碼沒有問題,可以編譯,
執(zhí)行結(jié)果:
treble臥槽
執(zhí)行結(jié)果居然是一首詩!
作者是Ian Phillipps。
例4
這個極富行為藝術(shù)的小火車,已經(jīng)讓一口君已經(jīng)開始徹底懷疑人生了!
quadra臥槽!
結(jié)果如下:
peng@ubuntu:~/test$?./marshall?
??????choo?choo
例5
如果你仍然覺得just so so,那好吧,你再看下面這個代碼,簡直就是藝術(shù)與代碼的天作之合。
我相信這個代碼的作者一定是個滿臉絡(luò)腮胡子油膩的摳腳擼串肥宅大漢,
否則怎么會畫出這么驚世駭俗、震驚寰宇、美的不可方物、如此卡哇伊的小蘿莉!
關(guān)鍵是他真的可以運行:
畫的居然是雪花!
penta臥槽
這些代碼是IOCCC 【(The International Obfuscated C Code Contest)國際C語言混亂代碼大賽是一項國際編程賽事】的一些獲獎作品,有興趣可以去搜索下。
毫無疑問,這些大師都是世界上最頂級的C語言程序員,都是god like、legendary。
在這里我們就不討論這些代碼原理了(關(guān)于這些代碼的分析,你可以上網(wǎng)查詢),
彭老師并不是鼓勵大家也去寫這樣的代碼,
恰恰相反,我要告訴大家的是:
大師把代碼寫成這樣是經(jīng)典,你把代碼寫成這樣是垃圾!
所以在垃圾和經(jīng)典之間,你需要做一個抉擇。
C語言博大精深,各位碼農(nóng),且學(xué)且珍惜!