条件フラグ
Forth の条件付き制御コマンドはフラグを使用して真/偽の値を示します。フラグは、テスト基準に基づいて、いくつかの方法で生成できます。生成できたら、ワード "." でスタックから表示したり、条件付き制御コマンドの入力として使用できます。条件付き制御コマンドは、フラグが真 (true) の場合と偽 (false) の場合にそれぞれ異なる応答を表示します。
表示値が 0 の場合は、フラグの値が falseであることを示します。-1 またはその他のゼロ以外の任意の数値は、フラグが trueであることを示します。(16 進では、値 -1 は ffffffff として表示されます。)
表 4-20 に、比較テストを実行し、trueまたは falseフラグの結果をスタックに残すコマンドを示します。
表 4-20 比較コマンド
コマンド
|
スタックダイアグラム
|
説明
|
< |
( n1 n2 -- flag )
|
n1 < n2 の場合 true。
|
<= |
( n1 n2 -- flag )
|
n1 <= n2 の場合 true。
|
<> |
( n1 n2 -- flag )
|
n1 != n2 の場合 true。
|
= |
( n1 n2 -- flag )
|
n1 = n2 の場合 true。
|
> |
( n1 n2 -- flag )
|
n1 > n2 の場合 true。
|
>= |
( n1 n2 -- flag )
|
n1 >= n2 の場合 true。
|
0< |
( n -- flag )
|
n < 0 の場合 true。
|
0<= |
( n -- flag )
|
n <= 0 の場合 true。
|
0<> |
( n -- flag )
|
n
<> 0 の場合 true。
|
0= |
( n -- flag )
|
n = 0 の場合 true (さらにフラグを反転します)。
|
0> |
( n -- flag )
|
n > 0 の場合 true。
|
0>= |
( n -- flag )
|
n >= 0 の場合 true。
|
between |
( n min max -- flag )
|
min <= n <= max の場合 true。
|
false |
( -- 0 )
|
FALSE (偽) の値 0。
|
true |
( -- -1 )
|
TRUE (真) の値 -1。
|
u< |
( u1 u2 -- flag )
|
u1 < u2の場合 true。u1、u2 とも符号なし。
|
u<= |
( u1 u2 -- flag )
|
u1 <= u2 の場合 true。u1、u2 とも符号なし。
|
u> |
( u1 u2 -- flag )
|
u1 > u2 の場合 true。u1、u2 とも符号なし。
|
u>= |
( u1 u2 -- flag )
|
u1 >= u2 の場合 true。u1、u2 とも符号なし。
|
within |
( n min max -- flag )
|
min <= n < max の場合 true。
|
> はスタックから 2 つの数値を取り出し、最初の数値が 2 番目の数値より大きかった場合は true (-1) をスタックに返し、そうでなかった場合は false (0)を返します。次に例を示します。
ok 3 6 > .
0 (3 は 6 より大きくない)
ok
|
0= はスタックから 1 項目を取り出し、その項目が 0 であった場合は true を返し、そうでなかった場合は false を返します。このワードはどちらのフラグもその反対の値に反転します。