まず、これをもう少しうまくフォーマットしましょう。
int i;
main()
{
for(;i["]<i;++i){--i;}"];
read('-'-'-',i++ + "hello, world!\n",'/'/'/'));
}
read(j,i,p)
{
write(j/p+p,i---j,i/i);
}
次に、実際に何をするかを見てみましょう。
for(;i["]<i;++i){--i;}"];
と同じです
for(;"]<i;++i){--i;}"[i];
したがって、初期化は行われず、インデックス付きの「C コード」の文字列がiゼロでない限り。
次に、for ループの更新部分が続きます。
read('-'-'-',i++ + "hello, world!\n",'/'/'/'));
'-'-'-'と同じようにゼロです'a'-'a'。i++ + "hello, world!"はポインタ + オフセットであり、もちろん 'i' を更新します。そして最後の部分は、何かをそれ自体で割り、1 を作ります。
最後のトリックは、readwrite を呼び出す再定義された関数です。
read(j,i,p)
{
write(j/p+p,i---j,i/i);
}
そして、同様のトリックを使用して、stdoutwith j/p+p (上から p = 1、j = 0、つまり 0/1+1 = 1) の値と、書き込むデータの長さ (1) を生成します。書く文字はi-- -j、 をするi前に取っ--ているので、効果はありません[グローバルiではなく、ローカルのものを使用していreadます。