1

おそらくここでは非常に単純な質問ですが、私はそれが奇妙だと思います。幸いなことに、私はそれを回避する方法を見つけましたが、私が行ったことが機能し、タイトルにあるものが機能しないという事実は、私を混乱させています!

私は単純なif文を持っています...そして関数を実行します。このコードは機能します:

if (200 > (x-target.x) && (x-target.x) > 0)
                fireWeapon();

しかし、このコードはそうではありません!

if (200 > (x-target.x) > 0)
                fireWeapon();

AS3でもエラーは発生しません....単に条件のifステートメントを実行するだけです

if (200 > (x-target.x))

0より大きくなければならないステートメントを無視しているようです。将来的には、より短く、数学的に見栄えの良い方法を使用したいので、&&記号を回避する方法があれば教えてください! ありがとう。

4

1 に答える 1

2

if (200 > (x-target.x) > 0)コードは機能しています。しかし、あなたの考えは違います。1つの文を解釈するためにコンピュータ。以下のように評価されます。

1) 200 > ( x-target.x ) 200 が (x-target.x) より大きい場合、false ではなく true を返します。

2) true(1) または false(0) > 0 left-statement が true の場合、false ではなく true を返します (1 は 0 より大きいため)。

その結果、200 が (x-target.x) より大きい場合、false ではなく常に true を返します。一般に、コンピューター言語で使用される構文は、数学の構文と同じではありません。

x> y> zに変更する必要がありますx>y && y>z && x>z

于 2013-07-13T12:33:08.353 に答える