c语言——位段

1.什么是位段
位段的声明和结构是类似的,有两个不同:
1.位段的成员必须是 int、unsigned int 或signed int,在C99中位段成员的类型也可以选择其他类型。
2.位段的成员名后边有一个冒号和一个数字。

c语言——位段_第1张图片  位段的位是二进制的位

位段式的结构体大小是明显小于同样成员的普通结构体的大小的,其实位段的出现主要是在完成功能的情况下尽量的节省内存。相比之下结构体的对齐比较浪费空间

位段的跨平台问题
1.int 位段被当成有符号数还是无符号数是不确定的
2.位段中最大位的数目不能确定。(16位机器最大16,32位机器最大32,写成27,在16位机器会出问题

3.位段中的成员在内存中从左向右分配,还是从右向左分配,标准尚未定义。
4.当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是舍弃剩余的位还是利用,这是不确定的。 

你可能感兴趣的:(c语言,c语言,开发语言)