C ユーザーズガイド

構造体、共用体、列挙型、およびビットフィールド (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

ダブルワード 

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

クワドワード 

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 型です。