0
if ( 25 <= si & < 30 )

が機能しておらず、& の適切な使用に関する情報を Google で検索する方法が見つかりません。

表示されるエラー メッセージは、> が & の場所であることが期待されていることを示しています。

4

3 に答える 3

8

正しい構文は次のようになります。

if ( 25 <= si & si < 30 )

これはビット演算を使用していないことに注意してください!!&

このコンテキストでは、&演算子の LHS と RHS はブール値であるため、Java は非短絡論理 AND 演算を使用します。

これを次のように書くこともできます。

if ( 25 <= si && si < 30 )

... つまり、短絡論理 AND 演算子を使用します。

どのフォームを使用する必要がありますか?

  • セマンティックの観点からは、LH および RH 部分式には副作用がないため、&andはどちらも正しい答えを返します。&&

  • パフォーマンスの観点からは、2 つのバージョンが JIT コンパイラーによって同じ (または同等に機能する) ネイティブ コードに最適化されることを期待しています。しかし、オプティマイザーがそれを行わない場合、2 つのバージョン間のパフォーマンスの違いは、完全なアプリケーションのコンテキストで考えた場合、無視できる可能性が最も高くなります。

  • 読みやすさの観点からは、&&フォームの方がおそらく優れています...しかし、多くの Java プログラマーがフォームを誤解するのは、Javaでは必ずしもビット単位では&ないことを理解していないためです!&

于 2012-09-08T00:15:13.227 に答える
0

<<=>、および>=は、両側に整数値を必要とする二項演算子であることに注意してください。if 条件の&と の間に何もないため、コンパイラは不平を言っています。<

&また、演算子と演算子の違いについても学ぶ必要があり&&ます。(私が思っていた違いについては訂正しました。詳細については、Java 仕様の15.22.2. ブール論理演算子 &、^、および |および15.23. 条件付き And 演算子 &&を参照してください。)

すべてをまとめると、正しいコードは

if (25 <= si && si < 30) 

最後に、今後の質問については、正確なエラー メッセージをコピーして貼り付けていただければ、質問にお答えできると非常に助かります。多くの場合、言い換えは、私たちがあなたを助けるために必要な詳細の多くを失います.

于 2012-09-08T00:10:19.750 に答える
-1

すべての Java ブール演算子と同様に、シンボルを 2 回使用する必要があります

すなわち&&、および

|| is for or

したがって、あなたの解決策は

(25 <= si && si < 30)

つまり、25 以上 30 未満 (si = 25 || 26 || 27 || 28 ||29) です。

于 2012-09-08T00:13:13.110 に答える