长安大街-taole
这篇是为
C
写的,不过作为代码阅读习惯和能力的培养,转自
人牲一笑
的
bolg
。
/share/detail/16373609
//
原始代码
#include
char *a;main(int t,int _,char* a){return!0
main(2,_+1,
,/'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
i;
{rw'
iK{;[{nl]'/w#q#n'wk
nw'
iwk{KK{nl]!/w{%'l##w#'
nr'/
:{nl]'/*{q#'ld;r'}{nlwb!/*de}'c
;;{nl'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
') }+}{rl#'{n' ')# }'+}##(!!/
:t<-50?_==*a?putchar (31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0
//
把代码格式化一下
#include
char *a; // can be omitted due to function field
main(int t,int _,char* a){
return !0
t<3 ?
main(-79,-13,a+m ain(-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,
:9
:16
:t<0 ?
t<-72 ?
main(_,t,
k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r
q#'+d'K#!/+k#; q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n' ;d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#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
main(2,2,
:*a=='/' ||main(0,main(-61,*a,
i@bK'(q)-[w]*%n+r3#l,{}:n uwloca-O;m .vpbks,fxntdCeghiry
;
}
//
翻译成常规语言
// condition ? true : false a,b,c generate step
#include
main(int t,int _,char* a){
//
逻辑运算优先级,便于理解
if(!0
if(t<3)
main(-79,-13,a +main(-87,1-_,main(-86,0,a+1)+a));
else
1;
if(t<_)
main(t+1,_,a);
else
3;
if(main(-94,-27+t,a)&&t==2){
if(_<13)
return main(2,_+1,
else
return 9;
}else
return 16;
}else{
if(t<0){
if(t<-72){
return
main(_,t,
k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
}else{
if(t<-50){
if(_==*a)
return putchar(31[a]); // pointer compile a[b] with b[a]
else
return main(-65,_,a+1);
}else{
return main((*a=='/')+t,_,a+1);
}
}
}else{
if(0
return main(2,2,
else
// condition compile step a||b
return *a=='/'||
main(0,main(-61,*a,i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry
}
}
}
//
除去不需要的,重构
if
语句
#include
main(int t,int _,char* a){
if(1
if(t<3)
main(-79,-13,a+main(-87,1-_,mai n(-86,0,a+1)+a));
if(t<_)
main(t+1,_,a);
if(main(-94,-27+t,a)&&t==2){
if(_<13)
return main(2,_+1,
else
return 9;
}else
return 16;
}else if(t<0){ //
根据语义,可进一步重构
if(t<-72){
return
main(_,t,
k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
}else if(t<-50){
if(_==*a)
return putchar(a[31]); //
指针编译原理
a[b]
和
b[a]
,注意是
char*
else
return main(-65,_,a+1);
}else{
return main((*a=='/')+t,_,a+1);
}
}else if(0
return main(2,2,
}else{
if(!(*a=='/'))
return
i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry
else
main(0,main(-61,*a,
return 1; //
等于
(*a=='/')
}
}
//
编译环境
main
入口,
CRTO.C for main(__argc, __argv, _environ);
//
方法的编译原来,返回值的寄存器状态
//
变量的类型转换
reinterpret_cast
//
使用一个新的< br>main
方法,将旧的用一个新方法
'decode'
表示
//
根据题设,本程序执行方式为无命令参数,即,
argc==1
//
变量的声名规约,改变变量名以方便理解
//
进一步重构
if
语句
#include
int decode(int arg1,int arg2,char* sCodec){
if(1
if(arg1<3)
decode(-79,-13,sCodec+decode(-8 7,1-arg2,decode(-86,0,sCodec+1)+sCodec));
if(arg1
decode(arg1+1,arg2,sCodec);
if(decode(-94,-27+arg1,sCodec)&&arg1==2){
//
内部递归,无后续分支,可展平为递推方式
if(arg2<13)
return decode(2,arg2+1,
else
return 9;
}else
return 16;
}else if(arg1<
-72){
//
可根据
arg1
范围代入。本条件代入后略
return
decode(arg2,arg1,
#q#n+,/+k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
}else if(arg1<
-50){
//
内部递归,无后续分支,可展平为递推方式
if(arg2==*sCodec)
return putchar(sCodec[31]);
else
return decode(-65,arg2,sCodec+1);
}else if(arg1<0){
//
内部递归,无后续分支,可展平为递推方式
return decode((*sCodec=='/')+arg1,arg2,sCodec+1);
}else if(0
arg1
取值取舍
return decode(2,2,
}else{ // arg1 == 0
if(!(*sCodec=='/'))
//
内部递归,无后续分支,可展平为递推方式
return
decode(0,decode(-61,*sCod ec,
i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry
else
return 1;
}
}
int main(int argc, char* argv[], char** _environ){
return decode(argc,(int)argv
,(char*)_environ);
}
//
分析出递归顶层返回值。
//
注意所有
retu rn
的含义,
9/16/1/putchar()
,
Non Zero -> TRUE
//
分析
arg1
的内容,重构方法,有些坳,自己试着理解吧
#include
int decode(int arg1,int arg2,char* sCodec){
if(1
if(arg1<3){
decode(0,-86,
n+,/+k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
decode(1-arg2,-87,
;#q#n+,/+k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
decode(-13,-79,
#n+,/+k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
}
if(arg1
decode(arg1+1,arg2,sCodec);
decode(-27+arg1,-94,
,/#;#q#n+,/+k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
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'-{}r w]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
nr'/
')
}+}{rl#'{n'
')# }'+}##(!!/
if(arg1==2){
while(arg2<13){
arg2 ++;
sCodec =
//
上方条件代入
if(arg1<3){
decode(0,-86,
n+,/+k#;*+,/'r
:'d*'3,}{w+K
w'K:'+}e#';dq#'l
r{#w'r < br>q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){) #}w'){){nl]'/+#n';d}rw'
i;#
){nl]!/n{n#';
长安大街-taole
长安大街-taole
长安大街-taole
长安大街-taole
长安大街-taole
长安大街-taole
长安大街-taole
长安大街-taole
本文更新与2021-01-20 00:55,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/535626.html
-
上一篇:'《理疗瑜伽》课程大纲
下一篇:英国文学史复习大纲