-4

私はOpenGLを学んでおり、このような機能がいくつかあります

function(parameter1 | parameter2);

「|」が表示されない 前に、それはどういう意味ですか?

ありがとう。

4

3 に答える 3

3

それはビット単位の OR です。 C のすべての演算子のリストを次に示します。

于 2013-06-22T18:12:37.197 に答える
3

|「ビットごとの or」演算子です。2 つの数値の各ビットを取得し、2 つの数値のいずれかでオンになっている場合、対応するビットがオンになっている数値を返します。次に例を示します。

00001111 = 15
01010101 = 82
--------
01011111 = 95

&、ビットごと、および - と比較して、両方の数値でオンになっている場合にのみビットがオンになります。

00001111
01010101
--------
00000101 = 6

および^、ビットごとの xor - 各ビットは、一方の数値でオンになっていて、もう一方の数値でオンになっていない場合にオンになります。

00001111
01010101
--------
01011010 = 90
于 2013-06-22T18:14:29.347 に答える
3

@Alexandry Barbarosie が指摘したように、これはビットごとの OR 演算子です。この演算子をこのように使用して、複数の異なるオプションを 1 つのパラメーターとして関数に結合する場合があります。多数の異なる定数があり、それぞれが異なる 2 の累乗である場合、関数がどのオプションが選択されたかをデコードできるように、すべての定数を OR することにより、これらの定数を 1 つの定数に結合できます。たとえば、書く代わりに

int function(bool wantOption1, bool wantOption2, /* etc. */);

あなたは書ける

const int WANT_OPTION_1 = 1;
const int WANT_OPTION_2 = 2;
const int WANT_OPTION_3 = 4;
const int WANT_OPTION_4 = 8;
/* ... */

そして、関数を次のように定義します

int function(int options);

次に、次のように記述して関数を呼び出すことができます

function(WANT_OPTION_1 | WANT_OPTION_3);

お役に立てれば!

于 2013-06-22T18:15:12.863 に答える