可能性の重複: これはc int a:16;で何を意味しますか?
What does 'unsigned temp:3' mean?
int型どういう意味してください:16。
私はそれがこのようなコードであり、コンパイルしていることがわかりました。
構造体名{ int a:16; }
可能性の重複: これはc int a:16;で何を意味しますか?
What does 'unsigned temp:3' mean?
int型どういう意味してください:16。
私はそれがこのようなコードであり、コンパイルしていることがわかりました。
構造体名{ int a:16; }
これはbitfieldです。
ビットフィールドがint
に埋め込まれているので、この特定のビットフィールドはあまり意味をなさないが、16ビットタイプを使用するとスペースが無駄になります。
通常、あなたはビットサイズの要素を含む構造体のためにそれを使用している:それはビットフィールドです
struct {
unsigned nibble1 : 4;
unsigned nibble2 : 4;
}
struct name { int a:16; }
はa
が16ビットメモリ空間として定義されることを意味します。
struct name { int a:16; int b:16; }
int
は、32ビット(4バイト)であれば、その後1 int
のメモリを分割する:int
から残りのビット(16ビット)このように、b
言う、定義された別の変数を使用することができます2つの変数a
とb
に変換します。
PS:私は、sizeof(int)
= 4バイト、1バイト= 8ビットを想定してい
struct s
{
int a:1;
int b:2;
int c:7;
};/*size of structure s is 4 bytes and not 4*3=12 bytes since all share the same space provided by int declaration for the first variable.*/
struct s1
{
char a:1;
};/*size of struct s1 is 1byte had it been having any more char _var:_val it would have been the same.*/