3.1 不可分 C 型のサイズと整列
次の表は、不可分データ型とそれらがどのように表されるかを示しています。整列 (align 列) はバイト単位です。
表 7 不可分 C 型のサイズと整列
|
|
|
|
|
|
|
|
|
整数
|
|
|
|
|
|
|
|
|
_Atomic _Bool
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
_Atomic char
_Atomic signed char
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
_Atomic unsigned char
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
_Atomic short
_Atomic signed short
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
_Atomic unsigned short
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
_Atomic int
_Atomic signed int
_Atomic enum
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
_Atomic unsigned int
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
_Atomic long
_Atomic signed long
_Atomic unsigned long
|
8
|
8
|
4
|
4
|
8
|
8
|
4
|
4
|
_Atomic long long
_Atomic signed long long
_Atomic unsigned long long
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
ポインタ
|
|
|
|
|
|
|
|
|
any-type _Atomic *
_Atomic( any-type (*) () )
|
8
|
8
|
4
|
4
|
8
|
8
|
4
|
4
|
浮動小数点
|
|
|
|
|
|
|
|
|
_Atomic float
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
_Atomic double
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
_Atomic long double
|
16
|
16
|
12
|
4
|
16
|
16
|
16
|
8
|
複素数
|
|
|
|
|
|
|
|
|
_Atomic float _Complex
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
_Atomic double _Complex
|
16
|
16
|
16
|
16
|
16
|
16
|
16
|
8
|
_Atomic long double _Complex
|
32
|
16
|
24
|
4
|
32
|
16
|
32
|
8
|
虚数
|
|
|
|
|
|
|
|
|
_Atomic float _Imaginary
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
_Atomic double _Imaginary
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
_Atomic long double _Imaginary
|
16
|
16
|
12
|
4
|
16
|
16
|
16
|
8
|
構造体 (選択的な例)
|
|
|
|
|
|
|
|
|
_Atomic struct {char a[2];}
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
_Atomic struct {short a[2];}
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
4
|
_Atomic struct {int a[2];}
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
8
|
_Atomic struct {char a[16];}
|
16
|
16
|
16
|
16
|
16
|
16
|
16
|
8
|
|
不可分 struct 型の一般的な整列規則では、struct 型のサイズが 2、4、8、16 のいずれかであり、かつ対応する非不可分型の整列がこのサイズより小さい場合は、このサイズに一致するように不可分 struct 型の整列が増やされます。
不可分型は、ビットフィールドでは許可されません。