扫一扫
分享文章到微信

扫一扫
关注官方公众号
至顶头条
 第一道:
main() { printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60); }
第二道:
#include <stdio.h> 
main(t,_,a) 
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 %d\n"):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(31[a]):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); 
}
第一道解释:
因为:数组str[n] <==>(n)[str] 
所以:(unix)["have"] + "fun" - 0x60 <==> "have"[1]+"fun"-0x60 
即: 'a'+"fun"-0x60 
因为:'a' = 0x61 
所以:变为“fun”+1(隐含了同类型运算优先?) 
因为:“fun”是个char型指针 
所以:指向“un” 
因为:\021是一个八进制数,代表第一个字符 
所以:&1["\021unix\012\0"]<==>"unix\012\0" 
因为:012是八进制的换行,\0是字符串结束 
所以:最终结果是 
unix
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。