C++のboolの配列とunsigned char

フラグの配列を使いたいときに, "bool flags[8]"などとする代わりに"unsigned char"を使ってビット演算した方が良いという話. 本当かどうかは知らないがちょっと面白かったのでメモ.

unsigned char flags;
(flags & 1); // return 1st bit (the 1st flag)
(flags & 2); // 2nd
(flags & 4); // 3rd
flags |= 4; // assign true to the 3rd flag
flags ^= 4; // toggle the 3rd flag

// assign true to all flags
long b = 1;
for (long i = 0; i < 8; ++i)
{
  flags |= b;
  b <<= 1; // left shift. double b
}

http://cboard.cprogramming.com/cplusplus-programming/3725-array-boolean.html
http://www9.plala.or.jp/sgwr-t/c/sec14.html