法大奥山研究室

 previous  contents

3.3. 型(Type)の分類


3.1 で見た型指定子と 3.2 で見た宣言子を組み合わせると,扱えるデータは,つぎの「型(type)」に分類されます[C11 §6.2.5]。

オブジェクト型
Object Type
スカラ型
Scalar Type
算術型
Arithmetic
Type
実数型
Real Type
整数型
Integer Type
標準整数型
Standard
Integer Type
符号付き
Standard
Signed
Integer
Type
signed char
short
short int
int
long
long int
long longlong long int
符号無し
Standard
Unsigned
Integer
Type
_Bool
unsigned char
unsigned short
unsinged int
unsigned long
unsigned long long
拡張整数型
Extended
Integer Type
符号付きImplementation Defined
符号なし
列挙型(Enumerated Type)
浮動小数点型
Floating Type
float
double
long double
複素数型
Complex
Type
float _Complex
double _Complex
long double _Complex
ポインタ型(Pointer Type)
集成体型
Aggregate Type
配列型(Array Type)
構造体型(Structure Type)
関数型(Function Type)

[ノート]
(1) 標準符号付き整数型と拡張符号付き整数型をまとめて「符号付き整数型(Signed Integer Type)」と呼びます[C11 §6.2.5, 4]。
(2) 同様に,標準符号無し整数型と拡張符号無し整数型をまとめて「符号無し整数型(Unsigned Integer Type)」と呼びます[C11 §6.2.5, 6]。
(3) 「複素数型」のサポートは,処理系に任されています[C11 §6.2.5, 11]。
(4) charsigned charunsigned char で「文字型(Character Type)」を構成します[C11 §6.2.5, 15]。
(5) 上記表内の「ポインタ型」「配列型」「構造体型」「関数型」と,上記表に掲載していない「共用体型(Union Type)」と「アトミック型(Atomic Type)」の6つが「派生型(Derived Type)」を構成します[C11 §6.2.5, 20]。「派生型」とは,「オブジェクト型」と「関数型」から派生する型であり,「関数型」自体が「派生型」である理由は,返却値の型とパラメータの型によって特徴付けられるためで,「返却値の型より派生する」と考えます。
(6) 「アトミック型」のサポートは,処理系に任されています[C11 §6.2.5, 20]。

オブジェクト型は,コンパイル(翻訳)段階において,確保するメモリ領域の大きさ「サイズ(size)」の確定有無によって,つぎに分類されます。

後に見る演算子には,「スカラ型」に使えるものもあれば,「算術型」や「実数型」,さらには「整数型」に限定されたものもあります。演算子の利用制限にあたっては,上記表を確認すると良いでしょう。


 previous  contents