国际混乱C语言大赛获奖作品解析示例.docx

国际混乱C语言大赛获奖作品解析示例.docx

ID:50836371

大小:32.82 KB

页数:5页

时间:2020-03-15

国际混乱C语言大赛获奖作品解析示例.docx_第1页
国际混乱C语言大赛获奖作品解析示例.docx_第2页
国际混乱C语言大赛获奖作品解析示例.docx_第3页
国际混乱C语言大赛获奖作品解析示例.docx_第4页
国际混乱C语言大赛获奖作品解析示例.docx_第5页
资源描述:

《国际混乱C语言大赛获奖作品解析示例.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、国际混乱C语言大赛获奖作品解析示例(原创)国际混乱C语言大赛获奖的结果无疑是世界顶级C程序员C语言极限挖掘的结果。阅读,剖析它们绝对是一件超值的事情,下面我详细的剖析了一段在网上流传非常广的代码:#includemain(t,_,a)char*a;{return!0

2、6: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+Kw'K:'+}e#';dq#'lq#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw'i;#){nl]!/n{n#';r{#w'rnc{nl]'/#{l,+'K{rw'iK{;[{nl]'/w#q#n'wk

3、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(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1):0

4、

5、main(0,main(-61,*a,"!ek;dci@bK'(q)

6、-[w]*%n+r3#l,{}:uwloca-O;m.vpbks,fxntdCeghiry"),a+1);}(IOCCC1988年获奖作品,作者IanPhillipps。)以上是完整的源代码,编译运行之后会产生意想不到的优美输出,然后,大多数人直接阅读上面的代码相当吃力,以下我逐步将上述的代码解析成为了我们熟悉的形式。首先是去除干扰项,将其中的两个字符串置换为宏,便于下一步分析:#defineUSER_STRING_L"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,

7、/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r:'d*'3,}{w+Kw'K:'+}e#';dq#'lq#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw'i;#){nl]!/n{n#';r{#w'rnc{nl]'/#{l,+'K{rw'iK{;[{nl]'/w#q#n'wknw'iwk{KK{nl]!/w{%'l##w#'i;:{nl]'/*{q#'ld;r'}{nlwb!/*de}'c;;{nl'-{}rw]'/+,}##'*

8、}#nc,',#nw]'/+kd'+e}+;#'rdq#w!nr'/')}+}{rl#'{n'')#}'+}##(!!/"#defineUSER_STRING_S"!ek;dci@bK'(q)-[w]*%n+r3#l,{}:uwloca-O;m.vpbks,fxntdCeghiry"接下来是关键语句的置换,思路是:某一行出现两个以上条件运算符号的时候按照熟悉的if(a){}else{}格式解析(a)?(b)c)为(a)?(b):(c)这样,main(t,_,a)char*a;{return!0

9、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%d"):9):(16)):(t<0?(t<-72?(main(_,t,USER_STRING_L)):(t<-50?(_==*a?putchar(31[a]):main(-65,_,a+1)):(main((*a=='/')+t,_,a+1)))):(0

10、

11、main(0,main(-6

12、1,*a,USER_STRING_S),a+1)));}此时,代码的思路已经非常清晰了,但此函数在C语言级数上很难直接调试,相比于汇编级调试或者自己手动分析,再次转

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。