"无符号:(数字)"和工会

时间:2015-06-20 10:12:10

标签: c++ unions

我不知道什么是" 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

1 个答案:

答案 0 :(得分:1)

:引入了bit field,它是特定逻辑类型的结构中的值,但实际大小以位为单位。这对于定义访问值的各个位的结构(例如,从字中提取标志位)非常有用。

例如,定义unsigned b:5; unsigned c:3;会使bc在内存中共享相同的字节,其中b将为5位,c将是其他3位。