Oracle Solaris Studio 12.2: C ユーザーガイド

E.1.9 構造体、共用体、列挙型、およびビットフィールド (G.3.9)

E.1.9.1 (6.3.2.3) 共用体のオブジェクトのメンバーはほかの型のメンバーを使用してアクセスされる

共用体のメンバーに記憶されているビットパターンがアクセスされ、アクセスしたメンバーの型に従って値が解釈されます。

E.1.9.2 (6.5.2.1) 構造体のメンバーのパディングと整列条件

表 E–5 構造体メンバーのパディングと整列

種類  

整合の境界  

バイト境界  

char_Bool

バイト 

short

ハーフワード 

int

ワード 

long -m32

ワード 

long -m64

ダブルワード 

long long -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

long long -m64

ダブルワード 

float

ワード 

double -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

double -m64

ダブルワード 

long double -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

long double -m64

クワドワード 

16 

pointer -m32

ワード 

pointer -m64

クワドワード 

float _Complex

ワード 

double _Complex -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

double _Complex -m64

ダブルワード 

long double _Complex -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

long double _Complex -m64

クワドワード 

16 

float _Imaginary

ワード 

double _Imaginary -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

double _Imaginary -m64

ダブルワード 

long double _Imaginary -m32

ダブルワード (SPARC)  

ワード (x86) 

8 (SPARC)  

4 (x86) 

long double _Imaginary -m64

ダブルワード 

16 

各要素が適切な境界上に並ぶように、構造体のメンバーが自動的に埋め込まれます。

構造体自身の整列条件はそのメンバーの整列条件と同一です。たとえば、chars 型だけの struct は整列の制限がありませんが、—m64 を使用してコンパイルされた double 型を含む struct は 8 バイトの境界上に並びます。

E.1.9.3 (6.5.2.1) 単なる int のビットフィールドは signed int ビットフィールドとみなされるか、unsigned int ビットフィールドとみなされるか

unsigned int とみなされます。

E.1.9.4 (6.5.2.1) int 内のビットフィールドの割り当て順序

ビットフィールドは、記憶装置内で高位から低位の順に割り当てられます。

E.1.9.5 (6.5.2.1) ビットフィールドは記憶装置の境界を越えることができるか

ビットフィールドは記憶装置の境界を越えません。

E.1.9.6 (6.5.2.2) 列挙型の値を表現するための整数型

int 型です。