回答:
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である必要はありません。
http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
「Visual C ++ 4.2では、標準C ++ヘッダーファイルにboolをintと同等にしたtypedefが含まれていました。VisualC ++ 5.0以降では、boolは1バイトのサイズの組み込み型として実装されています。つまり、Visual C ++ 4.2では、sizeof(bool)の呼び出しで4が生成されますが、Visual C ++ 5.0以降では、同じ呼び出しで1が生成されます。ファイル(OBJ)および/または4.2および5.0以降のコンパイラでビルドされたDLL。
実装が定義されています。標準のみsizeof(char)
です1
。
CHAR_BIT
で定義されていclimits
ます。
bool
ますか?私のコンパイラは1バイトだけを使用しますか?