我不知道什么是" unsigned:5",
例如,如果我创建这些:
int a:8;
unsigned b:8;
是一个整数?
和另一个问题:
与这些值联合:
union
{ long quad;
long duble;
char byte;
struct {
unsigned :16;
unsigned :16;
unsigned :16;
unsigned :15;
unsigned bit1:1;
} bits;
}pes;
pes.quad=0x12345678;
pes.duble=0xabcd;
pes.byte=0xef;
pes.bits.bit1=1;
Adress
中的原因是:ef ab 00 00 cc cc cc cc
我认为这将是ef ab 34 12 00 00 00 80
答案 0 :(得分:1)
:
引入了bit field,它是特定逻辑类型的结构中的值,但实际大小以位为单位。这对于定义访问值的各个位的结构(例如,从字中提取标志位)非常有用。
例如,定义unsigned b:5; unsigned c:3;
会使b
和c
在内存中共享相同的字节,其中b
将为5位,c
将是其他3位。