c语言位域

Posted 想文艺一点的程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言位域相关的知识,希望对你有一定的参考价值。

1、结构体位域的内存分布

区别一下两种规则:

  • 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止。
  • 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++,GCC采取压缩方式

  • 最大的数据类型为 int :所以是 4 字节对齐。
  • 如果相邻位域字段的类型相同,紧邻着前一个字段进行存储。

  • 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++,GCC采取压缩方式
  • 最大的数据类型为 int :所以是 4 字节对齐。
  • 这边编译器是 VC ,所以不压缩

    如果是 gcc 编译器:就是采用压缩的方式,4字节。

以上是关于c语言位域的主要内容,如果未能解决你的问题,请参考以下文章

C语言 - 位域(位域)详解

C语言union和位域

C语言位域

C语言基础:位域

C语言中如何将16位结构体定义为4位和12位两部分

求大神指教C语言中的位域