プログラミングを行うにあたっての重要事項の一つに変数のデータ型があります。
データ型を知らずにプログラミングをしますと、プログラムが思ったとおりに動作せずに頭を悩ませることになりかねません。
ここでしっかりとマスターしましょうね。
変数を使用するにはデータ型を宣言する必要がある
数値データにしろ文字データにしろ、変数にデータを格納するためには、まず変数宣言をしなければなりません。
なぜ変数の宣言が必要なのかと言いますと、C言語では変数に対して、データ型というものを指定しなければならないためです。
データ型というのは、取り扱うデータの種類だと思って頂いても大丈夫です。
例えば、これまでのC言語超入門でも、
int i;
という変数宣言を行ってきました。(例えば、C言語超入門(第12回)の※プログラム1で使用しています。)
これは、int型というデータ型を持った変数 i を使用します、という意味になります。
ここでポイントになるのが、「int型」というデータ型です。
int型には、次の2つの意味があります。
・整数のデータを扱う
・データの範囲は -2,147,483,648 から +2,147,483,647 である(データの範囲は、開発環境によって異なります。)
これがどう言うことかと言いますと、変数 i に対して、
i = 3.141592; i = 3000000000;
といったことができない、ということです。
よく間違えてしまいがちなケースが、
i = 10 / 3; i = 10000000 * 1000;
といった、計算結果が int型 で表現できない結果になる場合です。
やっかいなのが、このような誤りをしても、コンパイルエラーとして通知してくれないケースがある、ということです。(参考:C言語超入門 第12回コンパイルエラーの読み方を知ろう)
例えば、
int i; i = 3000000000;
とプログラミングをしてしまった場合、コンパイルエラーは出力されず、プログラムとしては正常に実行されてしまいます。
誤ったプログラム例として、以下の※プログラム1と、その実行結果を見てください。
※プログラム1 #include <stdio.h> int main() { int i; i = 3000000000; printf("%d\n",i); }
※プログラム1の実行結果 -1294967296
このように、変数 i に int型 で表現できない範囲のデータを格納してしまうと、変数内のデータが壊れてしまうのです。
データ型の種類を覚えよう
ですからプログラマーは変数を使用するとき、どのデータ型で宣言する必要があるのか適切に判断しなければなりません。
C言語でプログラミングするにあたっては、必ず抑えておいて欲しいデータ型が10種類あります。
たくさんあるな、と感じたでしょうか。
でもこの10種類を覚えておけば、大抵のプログラミングにおいて困ることはありませんから、頑張ってすべて覚えてくださいね。
※主要なデータ型と、数値の表現範囲
char型 ・・・ 文字 / -128~127
unsigned char ・・・ 符号無しchar型 / 0~255
short int ・・・ 短整数型 / -32,768~32,767
unsigned short int ・・・ 符号無し短整数型 / 0~65,535
int ・・・ 整数型 / -2,147,483,648~2,147,483,647
unsigned int ・・・ 符号無し整数型 / 0~4,294,967,295
long ・・・ 長整数型 / -9,223,372,036,854,775,808~9,223,372,036,854,775,807
unsigned long ・・・ 符号無し長整数型 / 0~18,446,744,073,709,551,615
float ・・・ 単精度浮動小数型 / 1.17549e-38~3.40282e+38
double ・・・ 倍精度浮動小数型 / 2.22507e-308 ~ 1.79769e+308
なお各データ型の表現範囲は、開発環境によって異なります。
次の※プログラム2をコンパイルして実行すると、その開発環境における各データ型の表現範囲が分かりますので、試してみてください。
※プログラム2 #include <stdio.h> #include <limits.h> #include <float.h> main() { printf("char = %d ~ %d\n", CHAR_MIN, CHAR_MAX); printf("unsigned char = %d\n", UCHAR_MAX); printf("short int = %d ~ %d\n", SHRT_MIN, SHRT_MAX); printf("usinged short int = %u\n", USHRT_MAX); printf("int = %d ~ %d\n", INT_MIN, INT_MAX); printf("usigned int = %u\n", UINT_MAX); printf("long = %ld ~ %ld\n", LONG_MIN, LONG_MAX); printf("usigned long = %lu\n", ULONG_MAX); printf("float = %g ~ %g\n", FLT_MIN, FLT_MAX); printf("double = %g ~ %g\n", DBL_MIN, DBL_MAX); }
※プログラム2の実行結果(開発環境によって結果が異なります。) char = -128 ~ 127 unsigned char = 255 short int = -32768 ~ 32767 usinged short int = 65535 int = -2147483648 ~ 2147483647 usigned int = 4294967295 long = -9223372036854775808 ~ 9223372036854775807 usigned long = 18446744073709551615 float = 1.17549e-38 ~ 3.40282e+38 double = 2.22507e-308 ~ 1.79769e+308
C言語超入門の第14回まとめ
今回のC言語超入門は、データ型の宣言方法とその種類について、お伝えしてきました。
データ型の種類はたくさんあるため、特に重要な3つのデータ型、char型、int型、double型から用法をマスターしていくように学習を進めていくと良いでしょう。
さて、次回のC言語超入門では、データ型を集めた配列の表現方法について学んでいきたいと思います。
もしかするとお気付きかもしれませんが、C言語には文字列を表現するデータ型がありません。
実はC言語では文字列を表現するために配列を使うのですが、次回に詳しくご説明いたしますね。
ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。