- ベストアンサー
論理演算について質問
- 論理演算子について質問しました。'&&'や'||'などの論理演算子は、2つのboolean型のオペランドに対して演算するのでしょうか?答えはYESです。
- また、括弧を用いることにより、演算子の結合順を変えることもできます。
- 結合順とは、ある演算子がオペランドを結合し、その括弧内の両側のオペランドをつなぐことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問1: 「オペランドに対して論理演算する」という文の意味が曖昧なので回答不能です。 && や || でなく、& や | についてなら、YESかな。 A && B は、Aを評価して真ならBを評価してBの結果を値とします。Aが偽ならBを評価せず結果は偽。 A || B は、Aを評価して偽ならBを評価してBの結果を値とします。Aが真ならBを評価せず結果は真。 質問2: 評価順序と結合順について。 評価順序については、各被演算項が副作用を伴うメソッド呼び出しであるケースを考えると理解出来るかと思います。下記の出力結果を予想してから実行してみてください。 public static boolean t(int x) { System.out.println("t("+x+") is called."); return true; } public static boolean f(int x) { System.out.println("f("+x+") is called."); return false; } public static void main (String[] args) { System.out.println( ( t(1) | f(2) ) & f(3) ); System.out.println( t(1) | ( f(2) & f(3) ) ); } 各被演算項の評価順序と、どの二項演算が先に行われるかは、無関係です。 >「ある演算子がオペランドを結合している」、こういうことでしょうか? 答えはYESかな。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
論理演算子はショートカット演算をするので, 数学的な操作とは必ずしも一致しません. 上の質問であなたが聞いているので「数学的な操作」ですか? それとも, 「Java における実際の動作」ですか? 下の質問については日本語の意味がよくわからんのでパス. いずれにしても, 言語仕様は見た?
お礼
丁重なご回答ありがとうございます! 言語仕様書見ましたが、難しすぎてちんぷんかんぷんです、、
お礼
丁重なご回答ありがとうございます^^ 参考になります