引用元:https://www.ioccc.org/1984/decot/decot.c
審査員・作者による説明:https://www.ioccc.org/1984/decot/hint.html
動作
ゴミデータを出力するだけ。
$ gcc -m32 -traditional-cpp -o decot decot.c -lm
$ ./decot
'",x); /*
\
解説
素朴に人間の認知に挑戦する感じ。
型名やキーワードをマクロで置き換えたり、do~whileのwhileが単独while文のように見えたり。
コメントがややこしい書き方になっているが、当時の意図はよくわかっていない。
当時のコンパイラではコメントを入れ子にできるものもあったらしいが、このプログラムのコメントを入れ子として解釈するとコンパイルエラーになると思う。
おそらくこの作品がきっかけで、1986年の第2回IOCCCからは、「何かしら興味深い動作をするコードに加点をする」というルールが追加された。
現代で動かすポイントは次の通り。
extern int floor;を、標準関数double floor(double x);へのポインタをintにキャストするので、64ビット環境では情報が落ちてしまって動かない。-m32をつければ回避できる。
#define x =という難読化は現代のC規格では違反なので、-traditional-cppをつける。
int*とdoubleの足し算がエラーになるので適当にk+sinを(int)k+sinとするパッチを適用する(下記)。
パッチ
パッチをダウンロード