ゲームではたくさんのフラグが必要になります 格闘ゲームならばコマンド入力でどのキーが押されたか?などのフラグ処理が必要になりますし RPGなどではイベントのフラグなど山ほどあるわけです 例えばbool型でフラグの数だけ定義すると・・・ bool isUP; // キー上が押された bool isDown; // キー下が押された bool isRight;// キー右が押された bool isLeft; // キー左が押された のようにフラグ単位で変数を用意する羽目になります これではフラグの管理が大変になってしまいます また、フラグデータの保存(セーブなど)にはあまりに非効率です そこでビット単位でフラグを定義し、一つの整数型の変数に複数のフラグを格納すれば、 フラグ変数の数も劇的に減らすことができます 以下にサンプルを示します #include <stdio.h> // フラグの作り方 // 各ビットの桁がフラグとして扱える enum MOVEFLAG{ UP = (1 << 0), // シフト演算でずらして各桁のビットを立てる DOWN = (1 << 1), LEFT = (1 << 2), RIGHT = (1 << 3) }; int main() { // int型はWindows環境下では32bitの変数として扱える // つまり、最大32個のフラグを格納できる // 0で初期化 int flag = 0; // フラグを立てたい場合はOR演算 flag |= UP; // OR演算の組み合わせで同時に複数のフラグを立てることができる flag |= (RIGHT | LEFT); // フラグが立っているかどうか調べるにはAND演算を使う if(flag & UP){ printf("UP\n"); } // UPかつRIGHTの場合 if( (flag & UP) && (flag & RIGHT)){ printf("UP and RIGHT\n"); } // フラグを降ろしたい場合はXORとANDを組み合わせる flag &= (flag ^ UP); if(flag & UP){ printf("UP\n"); } // 一括で降ろしたい場合 flag &= (flag ^ (LEFT | RIGHT)); if( (flag & LEFT) || (flag & RIGHT)){ printf("LEFT or RIGHT\n"); } return 0; } 実行結果は次のようになります &ref(flag.jpg); さらに興味がある人はstd::bitsetで調べてみると良いと思います std::bitsetはSTLで定義されたビット管理用のコンテナです C++が使える環境下ならば積極的に使っていくべきです #vote(理解できた(^ω^)[12],なんぞこれーΣ(゚д゚lll)[0],ちょっと理解できないですね(´・ω・`)[0]) vote(理解できた(^ω^)[12],なんぞこれーΣ(゚д゚lll)[0],ちょっと理解できないですね(´・ω・`)[0])