2

何と呼べばいいのかわからないので、どうやって検索すればいいのかわかりません。

unsigned int odd : 1;

編集:

詳述すると、それはこのスニペットから来ています:

struct bitField {
    unsigned int odd : 1;
    unsigned int padding: 15; // to round out to 16 bits
};

私はこれに少し関係があると思いますが、私はまだ完全には理解していません。

4

3 に答える 3

7

それらはビットフィールドです。oddの最下位ビットと上位15ビットを占める1つ(16ビット)にpadding格納されます。unsigned intoddpaddingunsigned int

于 2012-11-18T06:29:49.220 に答える
6

それはビットフィールドです-CのFAQを確認してください。

于 2012-11-18T06:27:00.897 に答える
0

これは:

  • 「奇数」の1ビット(例:1)
  • 15ビットの「パディング」(例:0000000000000001)
  • そして(潜在的に)他のビットが。を締めくくるものは何でもunsigned int。これが32ビットである最新の32ビットプラットフォームでは、メモリにさらに16個の0が表示されます(ただし、構造体には表示されません)。(この場合sizeofは4を返します)

ビットフィールドはメモリを節約できますが、計算に命令を追加する可能性があります。場合によっては、コンパイラがビットフィールド設定を無視することがあります。コンパイラが実際にビットフィールドをレイアウトする方法を想定することはできません。また、プラットフォームのエンディアンに依存する可能性があります。

私がビットフィールドを使用する主な目的は、データのコピーを大量に行うことを知っている場合であり、必ずしもビットフィールド内の特定のフィールドの計算や参照を大量に行う必要はありません。

于 2012-11-18T07:11:23.003 に答える