引用元:https://www.ioccc.org/1987/korn/korn.c
審査員・作者による説明:https://www.ioccc.org/1987/korn/hint.html
動作
unixと表示するプログラム。
$ gcc -o korn korn.c
$ ./korn
unix
解説
短くてシンプルなプログラムなので、IOCCCの中ではよく解説されている作品。
コード中にsixやhave funなどが仕込まれているのがとてもおしゃれ。
この作品はとても短いので、比較的容易に読み解ける。
"\012"は"\n"の8進数表記。
unixは(Unix環境で)1として定義されている定数。
&idx[str]はポインタ演算でidx + strと同じ意味。
&unix["\021%six\012\0"]は1 + "\021%six\n\0"なので実質"%six\n"。
(unix)["have"]は"have"[1]なので'a'、ASCIIコードで0x61。
(unix)["have"]+"fun"-0x60は0x61+"fun"-0x60、つまり"fun"+1、1文字進めるので"un"。
よってこのプログラムは実質的にprintf("%six\n", "un");をしている。
作者のDavid Kornはkshの作者。