5

重複の可能性:
Boolを使用したC++ビットフィールドパッキング

boolビットフィールド定義内でC++のキーワードを使用しても安全であることが保証されていますか?

何かのようなもの:

struct flags {
    bool a : 1;
    bool b : 1;
}
4

2 に答える 2

6

C ++ 03 9.6「ビットフィールド」から:

ビットフィールドは、整数型または列挙型(3.9.1)でなければなりません。プレーン(明示的に符号付きでも符号なしでもない)char、short、int、またはlongビットフィールドが符号付きか符号なしかは実装定義です。ブール値は、ゼロ以外のサイズのビットフィールドに正常に格納できます。..。

値trueまたはfalseが任意のサイズのbool型のビットフィールド(1ビットビットフィールドを含む)に格納されている場合、元のbool値とビットフィールドの値は等しくなります。..。

3.9.1 / 7「基本型」は、それboolが一体型であることを指定します。

于 2012-11-01T04:53:57.843 に答える
5

はい。実際には、使用sizeof(bool) * CHAR_BIT可能なビット数を知るためのガイドとして使用できます。

C ++ 98から、§9.6.3

ビットフィールドは、整数型または列挙型(3.9.1)でなければなりません。

C ++ 98から、§3.9.1.7

タイプbool、char、wchar_t、および符号付き整数型と符号なし整数型は、まとめて整数型と呼ばれます。

于 2012-11-01T04:53:11.403 に答える