4

C++ コードを読んでいるときに、クラス内の次の小さな行を見て混乱しました。

bool x:1;

デバッグ ビルドでは、「x」が「false」として初期化されていることに気付きましたが、それに関するドキュメントは見つかりません。この構文が何をするのか誰か教えてもらえますか?

4

1 に答える 1

10

それはビットフィールドです。C++ の教科書でビット フィールドを読んでください。

への初期化falseは、宣言とは無関係です。コードによって保証されるかどうかは、コードによって異なります (指定されていません)。

C++ 標準では、サイズ 1 の整数ビットフィールドと列挙型ビットフィールドに対してある程度の余裕がコンパイラに与えられます。1このようなフィールドに値を格納すると、 value を取得できます-1。幸いなことに、これはサイズ 1 のフィールドにのみ適用され、タイプ のフィールドには適用されませんbool

于 2012-08-06T15:34:11.780 に答える