3

次のようなコードに遭遇しました

if (flagsDef) 
flagsTainted |= flagsUsed;

使用される演算子の意味を理解するのを手伝ってください。

4

4 に答える 4

11

ステートメント:

flagsTainted |= flagsUsed

は次の省略形です。

flagsTainted = flagsTainted | flagsUsed

バイナリ/ビットごとの OR 演算子を使用します|

コードはフラグ変数を操作しています。フラグ変数は、変数にビットを設定することで状態情報を保持していますflagsTainted

ビット操作の詳細については、ウィキペディアの記事が非常に優れています。

于 2012-09-19T16:37:07.810 に答える
3

a op= bでありa = a op b|はビット単位のor演算子です (ビット単位とは、各 2 進数に適用されることを意味します)。

真理値表は次のとおりですor

    0 1 
    ___
 0| 0 1
 1| 1 1
于 2012-09-19T16:38:12.513 に答える
1

|はビットごとの OR です。これは、or 演算子を使用してビットを比較することを意味します。

例えば:

101
001

2 つの場合|は 101 になります。= 演算の左側に結果を代入します。

于 2012-09-19T16:36:57.227 に答える
0

英語では「or equals」と読むことができます。

+= に似ていますが、左の値を右に追加する代わりに、2 つの値のビットごとの OR を実行し、結果を左の変数に代入します。

ビット演算の詳細については、次のリンクを参照してください: ウィキペディア

于 2012-09-19T16:39:11.190 に答える