引用元:https://www.ioccc.org/2015/burton/prog.c
審査員・作者による説明:https://www.ioccc.org/2015/burton/hint.html
動作
レジスタのある電卓。
$ gcc -o prog prog.c
$ ./prog "a=1; b=0xf; a+b"
16 0x00000010
出力は10進数と16進数で行われる。
解説
サポートしている演算子や優先順位はcalc.manを参照のこと。
コード形状は”Calc”。
数字や文字列リテラルを(極力)使わないという制約で書かれている。
また、制御構造はfor
とreturn
のみとのこと。
コードサイズはiocccsize -i
で2015になるようにしている。
波括弧はメソッド定義でしか使わない。
メモリ確保をせずに動いているとのこと。
どうも、(char*)argv-65536
~argv
あたりのアドレスを勝手に使っているように見える。
valgrind上で実行したらSEGVする。将来動かなくなるかもしれない。