“无格式”int 位字段作为带符号 int 位字段处理还是作为无符号 int 位字段处理 (6.7.2, 6.7.2.1)。
作为无符号 int 进行处理。
除 _Bool、带符号 int 和无符号 int 之外其他允许的位字段类型 (6.7.2.1)。
可将位字段声明为任何整型。
位字段是否可以跨存储单元边界 (6.7.2.1)。
位字段不可以跨存储单元边界。
单元中位字段的分配顺序 (6.7.2.1)。
在存储单元中从高阶到低阶分配位字段。
非位字段结构成员的对齐 (6.7.2.1)。除非一个实现编写的二进制数据由另一个实现来读取,否则不会出现任何问题。
类型 |
对齐边界 |
字节对齐 |
---|---|---|
char |
字节 |
1 |
short |
半字 |
2 |
int |
字 |
4 |
long (SPARC) v8 |
字 |
4 |
long (SPARC) v9 |
双字 |
8 |
float (SPARC) |
字 |
4 |
double (SPARC) |
双字 |
8 |
double (x86) |
双字 |
4 |
long double (SPARC) v8 |
双字 |
8 |
long double (x86) |
字 |
4 |
long double (SPARC) v9 |
四倍长字 |
16 |
pointer (SPARC) v8 |
字 |
4 |
pointer (SPARC) v9 |
四倍长字 |
8 |
long long |
双字 (SPARC) |
8 |
long long (x86) |
字 |
4 |
_Complex |
浮点 |
8 |
_Complex |
双精度 |
16 |
_Complex |
长双精度 |
32 |
_Imaginary |
浮点 |
4 |
_Imaginary (SPARC) |
双精度 |
8 |
_Imaginary (x86) |
双精度 |
4 |
_Imaginary (SPARC) v8 |
长双精度 |
8 |
_Imaginary (SPARC) v9 |
长双精度 |
16 |
_Imaginary (x86) |
长双精度 |
4 |
与每种枚举类型兼容的整型 (6.7.2.2)。
这是 int。