自己啓発のために覚えておくべき重要なポイント - C++ はかなり型キャストされていますが、Forth は完全に反対です。高さを文字列、整数、または浮動小数点のどれにするか、また符号付きか符号なしか? それぞれに独自のユースケースがあります。どちらを選択する場合でも、選択したタイプを念頭に置いて Height 変数を操作する必要があります。毎回ビットが何を意味するかを考えてください。
あなたの ATOI 呼び出しから判断すると、Height の値を整数として欲しいと思います。ただし、5 バイトの整数は珍しいので、まだ確信が持てません。しかし、ここではその仮定に当てはまります。
VARIABLE Height 1 CELLS ALLOT
VARIABLE StrBuffer 7 ALLOT
: setHeight ( -- )
StrBuffer 8 ACCEPT
DECIMAL ATOI Height ! ;
CELLS 呼び出しは、CPU が好むビット数で変数を作成していることを確認します。DECIMAL 呼び出しは、ATOI の前の途中で HEX に変更していないことを確認します。
StrBuffer 変数を作成することは、文字列用のスクラッチ スペースを取得する多くの方法の 1 つです。CELL が 16 ビットであると仮定すると、「-32767\0」のように、ゼロで終わる 16 ビットの符号付き整数に最大 7 文字が必要になります。一部の実装には、独自のバッファーを作成する代わりに使用できる PAD があります。もう 1 つの一般的な言葉は SCRATCH ですが、それは私たちが望むようには機能しないと思います。
独自の文字列バッファー スペースを作成することに固執する場合 (私が個人的に気に入っているのは、どのくらいのスペースが得られたかを正確に把握しているからです)、すべての単語の文字列処理のニーズに対して 1 つの大きなバッファーを作成することを検討してください。例えば:
VARIABLE StrBuffer 201 ALLOT
これにより、200 文字で 64 ビットの符号付き整数に簡単に対応できるため、16 ビットの CELL を仮定する必要がなくなります。これは、現在または将来の実装の CELL サイズである場合に備えてです。