型宣言って一体何者か
C言語を勉強するとまず「型宣言」というものに出迎えられると思う。「型宣言」は要するに、「この変数をどういうものをしまう箱にするか」というもので、家の引き出しを靴下やハンカチと洋服を分けるような働きをする。文字をしまったり、整数をしまったりするように用途に分けるために型宣言を行う必要があります。
なぜ型宣言が必要なのか
まず、プログラムで変数を扱うときに、その変数に代入されるものによって確保するメモリ領域が変わるからです。
メモリ領域とはなんじゃらほい
パソコンを自作したことがある人やタスクマネージャーのパフォーマンスが見れるところ見てニヤニヤしている人も知っているかと思いますが、写真や動画を保存しておくところはメモリではなく、ストレージと呼びます。スマートフォンユーザーだとメモリ=ストレージと呼ぶ人もいますがあれは嘘だ。
メモリには0と1に切り替えられるスイッチが大量に内蔵されています。その数を4GBや16GBと表現しています。メモリには0と1で分けられたデータしか内蔵することができません。数字も文字もメモリで処理をします。1B(1バイト)は8bitなので4GBは34359738368bitになります。34359738368つのスイッチがあることになります。
メモリ領域と型宣言の関係
プログラムでは数字以外にも文字や日付などを処理することもあります。それを2進数にしてメモリで処理をさせる場合に、例えば、数字の「01100001(=97)」と文字の「01100001(=a)」はいずれも同じ数列になってます、データ型宣言によってプログラムに変数の役割を教えてやる必要があります。
C言語では同じ分類をする型に種類があります。例えば整数型に「int」、「long」などと種類があったことを覚えていますか? int型では4バイト、long型では8バイト使えるようになります。
なぜこのように区別されているのでしょうか? 1つめの理由にメモリの使い過ぎを防ぐ目的があります。3Dアクションゲームなど、高負荷なゲームをやったことがある人や、中古でパソコンを買った人ならわかるかと面ますが、メモリは起動しているアプリケーションの量やその負荷によって、どんどん使われていきます。そうしてメモリを使いすぎるとパフォーマンスが落ち、最終的には処理落ちします。もちろんそれは我々の作成するプログラムの例外ではなく、動作させればメモリを使います。そのため、多くのメモリ領域を予約する型を使うとメモリをもりもり使いだします。そのため適切な型を使うことが推奨されているのです。 2つめの理由は処理速度を向上させるためです。塵も積もればなんとやら、使うメモリを節約すればその分読みだす必要のあるメモリの量が減ることになります。一番大きな理由は1つめの理由ですが、主にハードウェアとしての理由になります。
でも最近のパソコンってメモリ多いじゃん
ごもっともです。昨今は安価でメモリ領域の大きなメモリを購入できます。そのためこのように型を分けるのは慣例化している部分があります。しかし古のコンピュータのメモリ領域は今のメモリと比べれば米粒と北海道レベルで違います。もちろんその分メモリをたくさん使う超弩級ソフトウェアがリリースされているのもまた事実です。やはりこのように大きなメモリがあってもそれが必要とされるほどメモリもぐもぐソフトウェアが開発できるようになっている以上、ちゃんとデータ型を気にするといいと思います。
おわりに
要はデータ型は主にハードウェアのメモリを効率よく、かつメモリのデータをしっかり使えるようにするための先人の知恵だとわかったかと思います。 これで「データ型 なにをつければ いいのかな」を解決できると思います。良きコーディングライフを!