C言語でBINGOを作ろう #7 変数を使ってみる
C言語でBINGOを作ろう!
C言語でBINGOを作ろう!
CUI上で動くビンゴゲームの完成目指してひっそりとプログラムの勉強を始めました。前回は変数を使ってみました。今回は変数の型について、もう少し詳しく説明を進めていきます。
前回更新から二か月半も何やってたんだYO!!
サンプルがほしい方は#11から読んでください。
開発環境
また、C言語の開発環境を構築したい場合は以下を参考にしてください。
コマンドプロンプトからサクラエディタを起動できるようにしてみた前編
コマンドプロンプトからサクラエディタを起動できるようにしてみた後編
本記事は以上の設定を行っている前提で説明を行います。
変数の型
変数の型
前回は、変数とは値を格納する箱のようなものだと説明しました。
こんな感じでしたね↓
プログラムで書くと
num = 7;
でした。
変数を作る
変数は宣言しないと使えない、というお話もありました。作っていない箱は使えない、ということですね。
そして、その変数の宣言の際には以下のように書く必要があります。
変数の型 変数名;
具体的に書くと下の通り。
int num;
これは「int型で、numという名前の変数を作ります」という宣言です。では、この「int」とは何者なのでしょうか。
変数の型
実は、この「int」とは、変数の型というものになります。型とは、どんな種類のものをしまえるのかを表すサインです。今回の例でいえば「int」型を格納できる「num」という名前の変数です、という宣言をしていることになります。
int num;
なぜ型が必要か
ところで、なぜ型なんてものが必要なのでしょうか。
例えば、「1」という値を変数にしまう場合を考えます。この「1」は人間にとってみれば「1」以外の何ものでもありません。
しかし、コンピュータにとっては「数字」なのか「文字」なのか「文字列」なのかわかりません。
どれも一緒じゃん、と思ったそこのあなた、「1は1に決まってるだろ、クサ生えたwww」とか思ったら大間違いです。
C言語では文字も数字として扱って※います。そして、例えば文字の「1」は、内部の処理では「49」という数字で管理されています。
つまり、数字の1は内部では「1」、文字の1は内部では「49」として管理されているため、人間のように文脈に応じて切り替えることができないのです。
そこで、「1」が「文字」なのか「数字」なのか、はっきりさせるためにC言語では「データ型」というものが存在します。「1」が文字なら文字型、数字なら数字型として宣言する必要があるのです。
※C言語では、文字は0~127の数字で管理しています。また、ここでいう文字とは、半角英数字記号です。ひらがなやカタカナ、漢字などは0~127では表現できないので扱いに注意が必要です。
データ型の種類
では、C言語にはどんなデータ型があるのでしょうか。一覧にしてみました。
※bit数やbyte数は筆者環境での値です。環境により異なることがあるので注意してください。
符号ありのデータ型(+-も考えるデータ型)
データ型 | 説明 | bit数 / byte数 |
---|---|---|
short int | 符号付整数を扱うデータ型 | 16bit / 2byte |
int | 符号付整数を扱うデータ型 | 32bit / 4byte |
long int | 符号付整数を扱うデータ型 | 32bit / 4byte |
long long int | 符号付整数を扱うデータ型 | 64bit / 8byte |
float | 単精度実数を扱うデータ型 | 32bit / 4byte |
double | 倍精度実数を扱うデータ型 | 64bit / 8byte |
long double | 四倍精度実数を扱うデータ型※ | 128bit / 16byte |
char | 文字(1文字)を扱うデータ型 | 8bit / 1byte |
※筆者環境ではlong double 型はうまく使用できませんでした。sizeof(long double)で型の大きさはわかったので参考までに掲載します。
符号なしのデータ型(正の数のみを扱うデータ型)
データ型 | 説明 | bit数 / byte数 |
---|---|---|
unsigned short int | 符号なし整数を扱うデータ型 | 16bit / 2byte |
unsigned int | 符号なし整数を扱うデータ型 | 32bit / 4byte |
unsigned long int | 符号なし整数を扱うデータ型 | 32bit / 4byte |
unsigned long long int | 符号なし整数を扱うデータ型 | 64bit / 8byte |
unsigned char | 符号なしで文字を扱うデータ型※C言語の内部では文字は整数として扱っているため、unsigned char型も存在する。 | 8bit / 1byte |
変数の使用例
では、最後に、変数を初期化して使う例を載せておきます。前回同様、int型の変数numberを使用したいと思います。
#include <stdio.h> int main(void){ int number = 0; number = 10; printf("%d", number); }
変数numberの中身10を表示するプログラムですね。
おまけ
下のプログラムを動かしてみるとどうなるか、やってみましょう。
#include <stdio.h> int main(void){ long long int num = 9876543210; printf("%d", num); }
9876543210と表示され・・・ない、だと・・・!?
宿題コーナー
毎回恒例、みなさんお楽しみの宿題のコーナーです。
前回の宿題と解答例
変数num1と変数num2を用意してその内容を表示してみましょう。こんな感じです↓
※変数の中身はお好みのものでOKです。今回は7と10にしています。
解答例
#include <stdio.h> int main(void){ int num1 = 7; int num2 = 10; printf("num1 = %d\n", num1); printf("num2 = %d\n", num2); return 0; }
今日の宿題
long long int型の変数numlとfloat型の変数numfを用意してその内容を表示してみましょう。こんな感じです↓
numl = 9876543210 numf = 3.14
次回は変数の型の紹介の続きです。
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載