2

重複の可能性:
「unsigned temp:3」とはどういう意味ですか?

int のような構文に出くわしvariable:4; ましたが、この構文の意味を誰か教えてもらえますか?

struct abc
{
int a;
int b:2;
int c:1;
};`enter code here`
4

2 に答える 2

3

構造体のビットフィールドの幅を定義します。ビットフィールドは整数値を保持しますが、その長さは特定のビット数に制限されているため、制限された範囲の値しか保持できません。

あなたが投稿したコードでは、構造体aは32ビット整数でbあり、2ビットビットフィールドでcあり、1ビットビットフィールドです。

于 2012-11-09T09:51:44.530 に答える
0

ビットフィールドです。b の完全な整数を格納する代わりに、2 ビットのみを格納するため、b は -2、-1、0、および 1 の値を持つことができます。同様に、c は -1 と 0 の値のみを持つことができます。

使用しているコンパイラのバージョンによっては、符号拡張は少し予測できず、一部のシステムでは、これらの値が 0、1 2 および 3 または 0 および 1 として表示される場合があります。

これにより、フィールドが整数未満にパックされますが、これも実装で定義された方法であり、実際に使用されるメモリの量やメモリ内のデータの順序について仮定しないことをお勧めします。

于 2012-11-09T09:55:14.207 に答える