はじめに
Visual C++において、BOOL型とbool型は微妙に違います。
BOOLはint型、boolはbool型
以下のようなサンプルプログラムで違いを見てみます。
bool hoge = FALSE; // false BOOL fuga = FALSE; // 0 int iSize; iSize = sizeof(hoge); // > 1byte iSize = sizeof(fuga); // > 4byte
bool型はtrue/falseの2つの値をとるboolean型です。反対に、BOOL型は実際にはint型で、FALSE=0となります。
BOOL型とbool型はサイズが違う
BOOL型は4byteですが、bool型は1byteになります。
warning C4800の警告
bool型にBOOL型を代入するなど、型の違う変数に代入すると、以下のような警告がでます。
warning C4800: 'BOOL' : ブール値を 'true' または 'false' に強制的に設定します (警告の処理)