-2

重複の可能性:
参照-この記号はPHPで何を意味しますか?

私はPHPとプログラミングを学ぼうとしています。私が研究している本には、次のようなものがあります。$ flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;

$ flagsはsplit()メソッドに使用されます。

最初のフラグは次のとおりです。このフラグが設定されている場合、preg_split()によって空でない部分のみが返されます。2つ目は、このフラグが設定されている場合、区切り文字パターンの括弧で囲まれた式もキャプチャされて返されます。

なぜ彼は&&演算子を使用していないのですか??

何を説明してもらえますか?実際に?

私の知る限り、これらは

4

2 に答える 2

4

&&は論理積ですが、| ビット演算子です。

a && b両方のオペランドがtrueと評価されると、 trueに評価されます。フラグはほとんどの場合1より大きい数値であるため、この式は常にtrueに評価されます。

ビットマスクを受け入れる関数のしくみ

それらは定数を指定します

これらの定数は2の累乗でなければならないことに注意してください。

FLAG_INT1 = 1
FLAG_INT2 = 2
FLAG_INT3 = 4
FLAG_INT4 = 8

いくつかのフラグを組み合わせて関数を呼び出します

myFunction(FLAG_INT1 | FLAG_INT3)

これにより、ビット単位のOR演算が行われます。

   0001
OR 0100
=======
   0101

オペランドの一方(または両方)のセットビット(1 )も、結果のセットビット( 1)になります。

関数は各フラグを内部的にチェックします

これには、ビットごとのAND演算が必要です。

    0101
AND 0001 // check for FLAG_INT1
========
    0001 // true

    0101
AND 0010 // check for FLAG_INT2
========
    0000 // false

    0101
AND 0100 // check for FLAG_INT3
========
    0100 // true

ビット単位のANDでは、位置Xの結果にセットビット( 1 )を生成するために、両方のオペランドに位置Xにセットビット( 1 )が必要でした。

ウィキペディアには、一般的なビット演算子に関する優れた記事もあります:http: //en.wikipedia.org/wiki/Bitwise_operation

于 2013-01-20T20:14:40.723 に答える
0

&&は論理「AND」ですが、| ビット単位です

于 2013-01-20T20:12:52.037 に答える