您的位置:首页 > 其它

IOCCC.1984.anonymous.c.解析

2015-10-27 12:39 316 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: