首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位字段的整数类型

位字段的整数类型
EN

Stack Overflow用户
提问于 2021-02-26 06:33:36
回答 1查看 37关注 0票数 1

位字段的整数类型是重要的,还是基本上是一次性的,例如:

代码语言:javascript
复制
struct font {
    int bold : 1;
    int italics : 2;
    int underline : 1;
};

代码语言:javascript
复制
struct font {
    unsigned int bold : 1;
    unsigned int italics : 2;
    unsigned int underline : 1;
};

代码语言:javascript
复制
struct font {
    char bold : 1;
    char italics : 2;
    char underline : 1;
};

不同的整数类型在这里“做”什么,或者它基本上是一个占位符?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-26 06:44:19

位字段是使用有符号类型还是无符号类型会使它可以容纳的值有所不同。在您的第一个示例中bold可以保持值0或-1,而在第二个示例中bold可以包含值0和1。

C标准特别允许int, unsigned int,或者_Bool作为位字段的类型,并支持实现定义的其他类型。大多数实现将允许位字段的任何整数类型。

对于那些这样做的人,类型指定了位字段所在的"bucket“的大小,因此它可以影响结构的大小。在gcc下的机器上,前两个结构的大小为4,而第三个结构的大小为1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66377485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档