最近、C および C++ の「フラグ」の例をいくつか目にしましたが、それらがどのように機能するのかよくわかりません。いくつかのソース コードを見た後、次のようにフラグ値が 16 進数で定義されていることが多いことに気付きました。
FLAG1 = 0x00000001,
FLAG2 = 0x00000010,
私の直感は、これらの価値が組み合わされていることを示唆しています。フラグは、すべてのフラグ値を 1 つの int に結合することによって機能しますか? これらの両方を使用した場合FLAG1 | FLAG2
、結果はどうなります0x00000011
か?
ビットオフセットを使用して列挙型を作成する必要がありますか、それとも昇順の整数を使用できますか?
FLAG1 = 1;
FLAG2 = 2;