本物のC

C の基本:型


プログラムが扱うデータの形式(及び付随する操作)は(type)により指定されます。コンピュータ上では全てがバイト列で表される訳なので、型はバイト列の解釈を決める情報と言う事もできます。

数値型

Cが定めている最も基本的な型は整数型(integer type)でしょう。これな名前の通り整数を表現します。

整数型は負の数が表現可能かどうかにより符号付き(signed)整数型と符号なし(unsigned)整数型に分けられます。また符号の有無の他にサイズ(領域のバイト数)の違いでもいくつか種類があり、それぞれの特徴は以下の様になっています。

バイト数 符号 最小値 最大値
signed char
char
1 0 256
unsigned char 1 -128 127
short 2 -32768 32767
unsigned short 2 0 65535
int
long※
4 -2147483648 2147483647
unsigned int
unsigned long
4 0 4294967295
long long 8 -9223372036854775808 9223372036854775807
unsigned long long 8 0 18446744073709551615
※ 64 ビット環境のlongは 8 バイトの場合もある。

整数のバイト(ビット)列としての表現は「C の前に:データの表現」で述べた通りです。

整数型には 0 と 1 だけを表現する事のみ想定されたboolという型もありますが(用途は「C の基本:条件式と真理値」で説明する「真理値」の表現です)、通常はcharと同じ 1 バイトです。

また「C の知識:列挙型」で説明する「列挙型」も数値型の一つです。

実数型は IEEE 754 に従う浮動小数点数で、以下の三つの型があります。

バイト数 仮数部 指数部 十進法での精度 名称 IEEE 754 での名称
float 4 23+1 8 7.22…桁 単精度 binary32
double 8 52+1 11 15.95…桁 倍精度 binary64
long double 16 112+1 15 34.02…桁 四倍精度 binary128

(これらの型は規格で厳密に規定されている訳ではありません。「C の詳細:型の定義」を参照)

それ以外の型

数値型でないものでは、特別な型としてvoid型があり、これは何も表現される値を持ちません。voidは例えば、関数が何も値を返さない場合の返り値の型として使われます。

またこの頁以降に説明するものとして

があります。