パソコン活用研究シリコンバレー(C、C++、の活用研究)

C言語のデータ型の基本
(準備中)


C言語の基本的なデータ型
char 文字 1Byte
short 整数 2Byte
int  整数 コンパイラにより異なる。 2 or 4Byte
long  倍長整数 4Byte
float  実数 4Byte
double 倍長実数 8Byte


C言語の文字列の扱いはやや注意を要します。
Cには文字型(char)はあるけど、文字列型というのはないんですね。
なので、文字列はchar型の変数の配列を使って、
char name[20];
のようにします。
文字列の表し方については画面に出力(printf) /キーボードから入力(scanf)/変数に少し書いてます。

その他、文字型については、文字型のおさらい
変数の型と標準出力への表示(出力)時の注意点はPrintfと変数の型
などご参照下さい。

整数型、実数型については、
各種データ型が混在した場合の演算にける精度の問題や、他のデータ型への変換(キャスト)の
問題については、cast演算子とオートキャストをご参照下さい。

sizeof演算子で各種データ型のサイズをチェックしてみます。
int型はコンパイラによりサイズが異なることがわかります。

sizeof.c

#include <stdio.h>

int main(void) {
printf("char: %d\n", sizeof(char));
printf("int: %d\n", sizeof(int));
printf("short: %d\n", sizeof(short));
printf("long: %d\n", sizeof(long));
printf("float: %d\n", sizeof(float));
printf("double: %d\n", sizeof(double));
printf("long double: %d\n", sizeof(long double));

return 0; }



LSIC86でコンパイル

D:\c>sizeof
char: 1
int: 2
short: 2
long: 4
float: 4
double: 8
long double: 10
D:\c>


Borland C++でコンパイル

c:\bcc55\Bin>sizeof
char: 1
int: 4
short: 2
long: 4
float: 4
double: 8
long double: 10
c:\bcc55\Bin>



(参考)
LSIC86のマニュアルから抜粋

基本型の内部表現は次の表のとおりです。

型 ビット数
char, signed char, unsigned char 8
short, unsigned short 16
int, unsigned int 16
long, unsigned long 32
float 32 (= 1+8+23)
double 64 (= 1+11+52)
long double 80 (= 1+15+64)
near-pointer 16
far-pointer 32

どのデータ型もすべて 2進表現であり、最も低位のバイトが最も小さいアドレス
に配置されます(little endian)。 アドレスの境界合わせは一切おこなわれませ
ん。charは、標準ではunsigned charと同じ型ですが、コンパイラの-csオプショ
ンによってsigned charとすることもできます。符号付きの整数型は負の数を2の
補数で表しています。

浮動小数点型は、 上位から順に符号ビット、指数部、仮数部の3つのフィールド
から構成され、その各ビット数は、上の表中にしるされているとおりです。符号
ビットはどの型も1ビットで、0のときは正、1のときは負を表します。 指数部は
げたをはいており (biased)、0111...111というビットパターンが指数部0を意味
します。仮数部は、float型とdouble型では、先頭の1を省いたケチ表現で、小数
点は一番左にあるものとみなされます。long double型では、先頭の1は省略され
ず、小数点はbit63とbit62の間にあるものとみなされます。

以下に、いくつかの浮動小数点数について各型での内部表現を 16 進数で示しま
す。  

    float      double           long double
0   00000000  0000000000000000  00000000000000000000
1   3F800000  3FF0000000000000  3FFF8000000000000000
3   40400000  4008000000000000  4000C000000000000000
-3  C0400000  C008000000000000  C000C000000000000000
0.25 3E800000  3FD0000000000000  3FFD8000000000000000








TopPage