c言語っぽいコードをBrainfuckに変換するものを作っていたので、Brainfuckでコード書いた時のことをまとめておきます。 はじめに 計算元に変更がないコーディングをする。 次の例を見てみましょう。 +++++>++++++++++< //5,10を定義 [>+<-] //5を10に移動 こうすると元から用意されていた5,10はことごとく変更が加えられてしまいます。こうならないように事前にコピーしてから実装したほうがあとでミスが少なくなります。 +++++>++++++++++< //5,10を定義 [>>>+<<<-]>>>[<<<+>>+>-]<<< //5を&3に移動,&3から&0,&2に値を移動 >[>>+<<-]>>[<<+>+>-]<< //10を&3に移動,&3から&1,&2に値を移動 これなら&0,&1に計算元の変数を残しつつ、&2に計算結果を残すことが出来ます。
![Brainf*ckを書く - AccessViolation Exception](https://cdn-ak-scissors.b.st-hatena.com/image/square/3b13969f62d4ddb96783418bc30a421a1b69c70f/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkamiyaowl%2F20140928%2F20140928225209.png)