2012-05-10 7 views
0

可能性の重複:
Shortcut “or-assignment” (|=) operator in JavaJava/Androidで| =とはどういう意味ですか? (ビット単位のOR代入)

私は、Android SDKのドキュメントでは、次のコード例を見つけました:

boolean retValue = false; 
    retValue |= mActionBarHelper.onCreateOptionsMenu(menu); 
    retValue |= super.onCreateOptionsMenu(menu); 

誰も私を表示することができますこれが何をしているかを実証するための同等のコード?

注:私は、メソッドの呼び出しは、ブール値を返すと仮定したので、私はこれがあれば、他の構造としてどのように見えるかの例を見てみたいです。

+1

@GregKopff:*はビット単位のORであり、論理和ではありません。 – Makoto

+0

@Makoto:ブール型のデータ型のビット表現が定義されているとは思わなかった。 –

+0

@ GregKopff:ビット単位のORは、2組のビットを取り、同じ場所のビットがハイに設定されている場合にのみビットをハイに保つことを意味します。例:1001 | 0110 = 1111 [詳細はウィキペディアをチェックしてください。](http://en.wikipedia.org/wiki/Bitwise_operation#OR) – Makoto

答えて

2

自分でorの省略形と私に割り当て、それは非短絡orの代わりに、論理的orですが。割り当ての簡単なバージョンとして利用可能であり、とにかくブーリアンで使用されることもありますが、|| =はありません。 しかし、重要な注意:

boolean a = mActionBarHelper.onCreateOptionsMenu(menu); 
boolean b = super.onCreateOptionsMenu(menu); 
boolean retValue = a || b; 

か:retValueはすでにtrue

だから、同等であるかもしれないにもかかわらず、この場合には(論理的に)文は、いくつかのことができますが、いくつかは次のようになり、両方のメソッドを呼び出します。

boolean retValue = mActionBarHelper.onCreateOptionsMenu(menu); 
retValue = super.onCreateOptionsMenu(menu) || retValue; 
8

|ブール値に適用されるのは単なるブール値ORだけです。

boolean retValue = false; 
retValue = retValue | mActionBarHelper.onCreateOptionsMenu(menu); 
retValue = retValue | super.onCreateOptionsMenu(menu); 
関連する問題