第一次接触混乱代码,求大神指导解释
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);}
输出为:
hello,world!
</i;++i){--i;}"];read('-'-'-',i+++"hell\
// 分行断开好看一点. int i; main() { // for循环中, 语句1没有, 语句2是:i["]<i;++i){--i;}"]; 语句3是:read('-'-'-',i+++"hello, world!\n",'/'/'/') for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\ // 从这里开始, i是全局变量, 值是0, C中值为0可以做指针,i["]<i;++i){--i;}"]这句,等于i[字符串], 等于i指向了方括号中的字符串首地址 // 字符串有14个字符, for循环14次, 循环体是空语句, 语句3是read()的函数调用. // 再说read()函数调用, 第一个参数是'-'-'-', 等于('-') - ('-') 等于0, 第二个参数(i++)这里i自增, 循环的结束条件, 同时把 // 字符串hello, world!\n传递给read()函数, 第三个和第一个一样, 两边加上括号, 结果是1. o, world!\n",'/'/'/')) ; } read(j,i,p) // j, i, p是主函数中for语句3 的函数调用的三个参数, j=0, i是字符串指针, p=1; {write(j/p+p,i---j,i/i);} // write()函数是库函数, 第一个参数是1(应该表示标准输出), 第三个参数是1(表示一次输出一个字符),所以程序是以库函数write()输出, 一次输出一个字符,