VC++では、TRUEまたはFALSEの値を想定できるデータ型「BOOL」と、trueまたはfalseの値を想定できるデータ型「bool」があります。
それらの違いは何ですか?各データ型をいつ使用する必要がありますか?
bool
は組み込みのC++型であり、BOOL
はint
として定義されるMicrosoft固有の型です。 windef.h
にあります。
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
bool
の値はtrue
とfalse
ですが、BOOL
の場合はint
の値を使用できますが、TRUE
およびFALSE
マクロはwindef.h
ヘッダーで定義されています。
これは、sizeof
演算子はbool
に対して1(ただし、bool
のサイズは実装定義であると規定されている)、およびBOOL
。
出典: Codeguruの記事
Windows APIは、bool
がC++にスローされる前はこのタイプでした。そして、それがBOOLを取るすべてのWindows関数でまだ存在する理由です。 Cはbool
データ型をサポートしていないため、BOOL
を使用する必要があります。
Luvieereが言ったことに追加するには、TRUE
を返す関数からFALSE
またはBOOL
以外のものを返すことができます。たとえば、
BOOL myFunc(int a)
{
if (a < 3) return FALSE;
else if (a > 3) return TRUE;
else return 2;
}
BOOL
は本質的にint
であるため、これは可能です。
これはコードの一般的な可読性を大幅に損なうためお勧めできませんが、これはあなたが遭遇する可能性のあるものであり、なぜそうなのか疑問に思われることに注意してください。