最高のワンライナー
xxxxxxxxxx
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
引用元: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の作者。