这在c int a中是什么意思:16;?

Ayo*_* M. 9 c c++ annotations programming-languages

可能重复:
'unsigned temp:3'是什么意思?

请注意这个符号是什么意思

int a:16;

我发现它是这样的代码,它确实编译.

struct name {int a:16; }

sch*_*der 17

这是一个位域.

这个特定的位域没有多大意义,因为你只能使用一个16位类型而你正在浪费一些空间,因为位域被填充到大小int.

通常,您将它用于包含位大小元素的结构:

struct {
    unsigned nibble1 : 4;
    unsigned nibble2 : 4;
}
Run Code Online (Sandbox Code Playgroud)


Naw*_*waz 12

struct name { int a:16; }
Run Code Online (Sandbox Code Playgroud)

它的意思a是定义为16位的内存空间.其余的位(16位)int可用于定义另一个变量,例如b,如下所示:

struct name { int a:16;  int b:16; }
Run Code Online (Sandbox Code Playgroud)

因此,如果int是32位(4字节),那么一个存储器int被分成两个变量ab.

PS:我假设sizeof(int)= 4个字节,1个字节= 8位