anonymous.c:
int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\ o,
world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
http://ioccc.org/years.html#1984
整理一下:
int i;
main(){
for(;i["]<i;++i){--i;}"];)
read('-'-'-',i+++"hell\
o, world!\n",'/'/'/');
}
read(j,i,p){
write(j/p+p,i---j,i/i);
}
- i+++被解析为i++ +
i["]<i;++i){--i;}"]相当于"]<i;++i){--i;}"[i]由于每次i增1,该表达式作为for语句的条件即为“当"]<i;++i){--i;}"[i]不为'\0'时循环,在字符串常量结尾会有'\0'因此条件相当于i<=14”'-'-'-'和'/'/'/'char提升为int直接运算为0和1
int i;
main(){
for(;i<=14;i++)
read(0,i+"hell\
o, world!\n",1);
}
read(j,i,p){
write(j/p+p,i---j,i/i);
}
- 传入read()函数的j和p始终为0和1
- 将read()函数之间带入main()
int i;
main(){
for(;i<=14;i++)
write(1,i+"hell\
o, world!\n",1);
}
- 取消转义换行
最终:
int i;
main(){
for(;i<=14;i++)
write(1,i+"hello, world!\n",1);
}

本文解析了一段复杂的C语言代码,通过逐步替换和解释,展示了如何理解并简化代码。初始代码利用了C语言的一些特性和语法糖,使得代码非常难以读懂。经过一系列转换,最终得到了清晰易懂的代码版本。
1万+

被折叠的 条评论
为什么被折叠?



