web-dev-qa-db-ja.com

sizeof(bool)はC ++言語標準で定義されていますか?

標準のドキュメントに答えが見つかりません。 C++言語標準では、sizeof(bool)が常に1(1バイト)である必要がありますか、またはこのサイズは実装定義ですか?

103
0xbadf00d

sizeof(bool)は実装定義であり、標準はこの事実に特に重点を置いています。

§5.3.3/ 1、要約:

sizeof(char)sizeof(signed char)、およびsizeof(unsigned char)は1です。他の基本型に適用されるsizeofの結果は実装定義です。 [注:特に、sizeof(bool)およびsizeof(wchar_t)は実装定義です。69)]

脚注69):

sizeof(bool)は1である必要はありません。

151
GManNickG

http://msdn.Microsoft.com/en-us/library/tf4dy80a.aspx

「Visual C++ 4.2では、標準C++ヘッダーファイルにboolとintを同等にするtypedefが含まれていました。VisualC++ 5.0以降では、boolは1バイトのサイズの組み込み型として実装されています。 C++ 4.2、sizeof(bool)の呼び出しは4を返しますが、Visual C++ 5.0以降では、同じ呼び出しは1を返します。VisualC++ 4.2でbool型の構造体メンバーを定義し、オブジェクトを混合している場合4.2および5.0以降のコンパイラでビルドされたファイル(OBJ)および/またはDLL。

13
Yi Ling

定義された実装です。 sizeof(char)のみが1標準により。

10
peoro

5.3.3パラグラフ1を参照してください。

[注:特に、sizeof(bool)とsizeof(wchar_t)は実装定義です69)]

3
BЈовић