構造体、共用体、列挙型、およびビットフィールド (G.3.9)
(6.3.2.3) 共用体のオブジェクトのメンバーは他の型のメンバーを使用して
アクセスされる。
共用体のメンバーに記憶されているビットパターンがアクセスされ、アクセスしたメンバーの型に従って値が解釈されます。
(6.5.2.1) 構造体のメンバーのパディングと整列条件
表 B-3 構造体メンバーのパディングと整列
型
|
整合の境界
|
バイト境界
|
char |
バイト
| 1 |
short |
ハーフワード
| 2 |
int |
ワード
| 4 |
long (SPARC) v8 |
ワード
| 4 |
long (SPARC) v9 |
ダブルワード
|
8
|
float (SPARC) |
ワード
| 4 |
double (SPARC) |
ダブルワード (SPARC)
ワード (x86)
| 8 (SPARC) 4 (x86) |
long double (SPARC) v8 |
ダブルワード (SPARC)
ワード (x86)
| 8 (SPARC)4 (x86) |
long
double (SPARC) v9
|
クワドワード
|
16
|
pointer (SPARC) v8 |
ワード
| 4 |
pointer (SPARC) v9 |
クワドワード
|
8
|
long long [-Xc モードでは無効です。] |
ダブルワード (SPARC)
ワード (x86)
| 8 (SPARC) 4 (x86) |
各要素が適切な境界上に並ぶように、構造体のメンバーが自動的に埋め込まれます。
構造体自身の整列条件はそのメンバーの整列条件と同一です。たとえば、char 型だけの struct は整列の制限はありませんが、double 型を含む struct は 8 バイトの境界上に並びます。
(6.5.2.1) 単なる int のビットフィールドは signed
int ビットフィールドとみなされるか、unsigned
int ビットフィールドとみなされるか。
unsigned int とみなされます。
(6.5.2.1) int 内のビットフィールドの割り当て順序
ビットフィールドは、記憶装置内で高位から低位の順に割り当てられます。
(6.5.2.1) ビットフィールドは記憶装置の境界を越えることができるか。
ビットフィールドは記憶装置の境界を越えることはありません。
(6.5.2.2) 列挙型の値を表現するための整数型
int 型です。