6.3.1.1p2的含义,项目符号点2

时间:2018-11-26 13:02:12

标签: c language-lawyer bit-fields

6.3.1.1p2

  

在可以使用intunsigned int的表达式中可以使用以下内容:

     
      
  • 具有整数类型(intunsigned int之外的整数类型的对象或表达式,其整数转换等级小于或等于int和{{ 1}}。

  •   
  • 类型为unsigned int_Boolintsigned int的位字段。

  •   

第二个要点的目的是什么?

为什么要忽略排名小于unsigned int的其他类型的整数字段?

这是否意味着我可以做到:

int

但不是:

printf("%d\n", (struct{ _Bool x:1; }){0}.x);

1 个答案:

答案 0 :(得分:2)

大概是因为6.7.2.1p5

  

位字段的类型应为_Boolsigned intunsigned int的合格或不合格版本,或其他一些实现定义的类型。是否允许原子类型由实现定义。

即您还是无法随便创建其他类型的位域。