结构声明中的冒号意味着什么,例如:1、:7、:16或:32?

结构声明中的冒号意味着什么,例如:1、:7、:16或:32?

下面的C+代码是什么意思?

unsigned char a : 1; unsigned char b : 7;

我猜它创建了两个字符a和b,它们都应该有一个字节长,但是我不知道“:1”和“:7”部分做了什么。


ABOUTYOU
浏览 656回答 3
3回答

大话西游666

1和7是限制值范围的位大小。它们通常存在于结构和结合中。例如,在某些系统上(取决于char宽度和包装规则等),代码:typedef struct {     unsigned char a : 1;     unsigned char b : 7;} tOneAndSevenBits;创建一个8位值,1位用于a和7位b.通常在C中用于访问“压缩”值,例如包含在8位字符的上半部分的4位ny球:typedef struct {     unsigned char leftFour  : 4;     unsigned char rightFour : 4;} tTwoNybbles;对于我们当中的语言律师来说,C+11标准的9.6节详细解释了这一点,稍作解释:位字段窗体的成员声明符。     标识符选择属性说明符选择   :   常数表达式指定位字段;其长度由冒号从位字段名开始。任选属性说明符与被申报的实体有关。位字段属性不是类成员类型的一部分.这个常数表达式为积分常量表达式,其值大于或等于零。积分常量表达式的值可能大于位字段类型对象表示中的位数;在这种情况下,额外的位被用作填充位,而不参与位字段的值表示。类对象中位字段的分配是实现定义的.位字段的对齐是实现定义的.位字段被打包到一些可寻址的分配单元中。注:一些机器上的位域跨分配单元,而另一些机器上没有。在一些机器上,位字段从右到左,在另一些机器上,从左到右.-尾注

jeck猫

我相信那应该是比特菲尔德。
打开App,查看更多内容
随时随地看视频慕课网APP