🖥️

【C言語超入門】 第02回 型と変数

2024/12/25に公開

https://youtu.be/vuJZhrs8bo0

四国めたん
\textcolor{pink}{四国めたん: }教師役ですわ

ずんだもん
\textcolor{lime}{ずんだもん: }生徒役なのだ

\footnotesize \textcolor{pink}{四国めたん:} 皆さん、こんにちは。四国めたんです

\footnotesize \textcolor{lime}{ずんだもん:} ずんだもんなのだ。こんにちはなのだ

\footnotesize \textcolor{pink}{四国めたん:} 今回もC言語のお勉強をしていきましょう

\footnotesize \textcolor{lime}{ずんだもん:} レッツゴーなのだ

\footnotesize \textcolor{pink}{四国めたん:} 第2回となる今回は 型と変数 についてお話していきますわ

\footnotesize \textcolor{lime}{ずんだもん:} 型と変数?

\footnotesize \textcolor{pink}{四国めたん:} ええ、型 Type と変数 Variable はプログラミングをおこなう際に必ず必要となるものですわ

\footnotesize \textcolor{lime}{ずんだもん:} 大切なものなのだ

\footnotesize \textcolor{pink}{四国めたん:} 型と変数 については他のプログラミング言語でも大切なものなので、しっかりと押さえておきましょう

とりあえず変数と型を使ってみよう

\footnotesize \textcolor{pink}{四国めたん:} とりあえずVisual Studio上でプログラムを作って 変数 を使ってみましょう

\footnotesize \textcolor{lime}{ずんだもん:} 第1回の "Hello World!!"の表示 のプログラムを書き換えるのだ

\footnotesize \textcolor{pink}{四国めたん:} もしVisual Studioを終了してしまっている場合は"スタート"から"Visual Studio 2022"を選べば再び起動できますわ

選択VS2022

\footnotesize \textcolor{lime}{ずんだもん:} 起動したら前のプロジェクト"Project1"を選べばいいのだ

選択Project1

\footnotesize \textcolor{pink}{四国めたん:} さっそく"hello_world.c"ファイルを書き換えていきますわよ

\footnotesize \textcolor{lime}{ずんだもん:} わかったのだ

#include <stdio.h>

void main() {
  int x;
  int y;

  x = 1;
  y = 2;
}

\footnotesize \textcolor{pink}{四国めたん:} ここで最後の中括弧 } の左の部分をクリックしますわ

\footnotesize \textcolor{lime}{ずんだもん:} 赤い丸が表示されたのだ

\footnotesize \textcolor{pink}{四国めたん:} ええ、これは ブレークポイント といって、プログラムの実行中に、この行でプログラムが止まるようになっていますわ

\footnotesize \textcolor{lime}{ずんだもん:} う~ん、よくわからないのだ

ブレークポイントをセット

\footnotesize \textcolor{pink}{四国めたん:} とりあえずツールバーの ローカルWindowsデバッガー をクリックして、何が起こるか確かめてみましょう

\footnotesize \textcolor{lime}{ずんだもん:} ブレークポイント の行でプログラムの実行が止まってしまったのだ

ブレークポイントで停止

\footnotesize \textcolor{pink}{四国めたん:} ええ、この時 自動 ウィンドウや ローカル ウィンドウを見て下さい

\footnotesize \textcolor{lime}{ずんだもん:} xy12 の整数値が割り当てられているのだ

\footnotesize \textcolor{pink}{四国めたん:} そうですわね

変数xとyの値

\footnotesize \textcolor{pink}{四国めたん:} もし 自動 ウィンドウや ローカル ウィンドウが開かれていない場合には デバッグ メニュー下の ウィンドウ から 自動変数 もしくは ローカル を選択すると表示されますわ

\footnotesize \textcolor{lime}{ずんだもん:} わかったのだ

自動変数メニュー選択

\footnotesize \textcolor{pink}{四国めたん:} それではプログラムの実行を終了させましょう

\footnotesize \textcolor{pink}{四国めたん:} ツールバーの 続行 をクリックして何かキーを押せば終了しますわ

\footnotesize \textcolor{lime}{ずんだもん:} プログラムが終了したのだ

変数の宣言と型

\footnotesize \textcolor{pink}{四国めたん:} それでは 変数 についてお話ししますわ

\footnotesize \textcolor{lime}{ずんだもん:} 変数 とはどのようなものなのだ?

\footnotesize \textcolor{pink}{四国めたん:} 一般的にはデータを入れる とか 入れ物 とかいわれていますわね

\footnotesize \textcolor{lime}{ずんだもん:} う~ん、いまいちよくわからないのだ

\footnotesize \textcolor{pink}{四国めたん:} わたくしの場合は付箋を付けたメモ帳のページのような感覚ですわね

\footnotesize \textcolor{pink}{四国めたん:} とりあえず今は 数値を入れておける保管場所 程度に思っていていいですわ

\footnotesize \textcolor{lime}{ずんだもん:} なるほどなのだ

変数としてのメモ帳

変数の名前

\footnotesize \textcolor{pink}{四国めたん:} 変数 には区別を付けるために 名前 、いわゆる 変数名 を付ける必要がありますわ

\footnotesize \textcolor{lime}{ずんだもん:} どのように付ければいいのだ?

\footnotesize \textcolor{pink}{四国めたん:} おおむね好きなように付けてOKですわ

\footnotesize \textcolor{pink}{四国めたん:} ただし使えるのはアルファベットと数字とアンダースコア _ のみですわね

\footnotesize \textcolor{lime}{ずんだもん:} え~?日本語とかは使えないのか?

\footnotesize \textcolor{pink}{四国めたん:} まぁ、半世紀近く前にアメリカで作られた言語なので、当然、日本語は使えるはずないですわね

\footnotesize \textcolor{lime}{ずんだもん:} 決まりだからしかたないのだ

\footnotesize \textcolor{pink}{四国めたん:} 変数名の例としては今回のプログラムで使用した xy 等がありますわ

\footnotesize \textcolor{pink}{四国めたん:} その他、 counternum_of_peopleid0 等も使えますわね

\footnotesize \textcolor{lime}{ずんだもん:} ふ~ん、 1st_person とかも使えるのか?

\footnotesize \textcolor{pink}{四国めたん:} いいえ、最初の文字に数字を使った名前は変数名としては使えませんわね

\footnotesize \textcolor{pink}{四国めたん:} それと単語の区切りにはスペースを使えませんので、代わりにアンダースコアを使用しますわ

\footnotesize \textcolor{lime}{ずんだもん:} num_of_people が例なのだ

\footnotesize \textcolor{lime}{ずんだもん:} ところで変数名に大文字を使っていなかったのだ

\footnotesize \textcolor{lime}{ずんだもん:} 使うことはできないのか?

\footnotesize \textcolor{pink}{四国めたん:} 大文字を使うことはできますが、C言語の習慣として 変数 には小文字を使いますわ

\footnotesize \textcolor{lime}{ずんだもん:} とりあえず混乱を防ぐためには習慣には従っておくのだ

\footnotesize \textcolor{pink}{四国めたん:} 習慣といえば アンダースコアから始まる変数名 は使わない方がいいですわね

\footnotesize \textcolor{lime}{ずんだもん:} なぜなのだ?

\footnotesize \textcolor{pink}{四国めたん:} アンダースコアから始まる変数名、特にアンダースコア2つで始まる名前は特別な意味があるのですわ

\footnotesize \textcolor{pink}{四国めたん:} __inline等がその例ですわね

\footnotesize \textcolor{lime}{ずんだもん:} 特別な名前と被るのは勘弁なのだ

\footnotesize \textcolor{lime}{ずんだもん:} 他には避けた方がいい変数名はあるのか?

\footnotesize \textcolor{pink}{四国めたん:} C言語には 予約語 と呼ばれる30以上の名前 Kyewords がありますわ

予約語

\footnotesize \textcolor{pink}{四国めたん:} 予約語 は特別な意味があるので変数名としては使えませんわね

\footnotesize \textcolor{lime}{ずんだもん:} 変数名の一部に含まれている場合もダメなのか?

\footnotesize \textcolor{pink}{四国めたん:} 変数名の一部に含まれているだけならOKですわね

\footnotesize \textcolor{pink}{四国めたん:} でも不要な混乱を招く元となるので、できるだけ避けた方がいいですわ

\footnotesize \textcolor{lime}{ずんだもん:} なるほどなのだ

変数の型

\footnotesize \textcolor{pink}{四国めたん:} 次は 変数の型 についてお話ししますわ

\footnotesize \textcolor{lime}{ずんだもん:} 変数の型 とはどのようなものなのだ?

\footnotesize \textcolor{pink}{四国めたん:} 変数には主に数値を入れるといいましたが、一概に数値と云っても色々な種類がありますわ

\footnotesize \textcolor{pink}{四国めたん:} ですので予めどのような数値を入れるか、種類を決めておく必要がありますわ

\footnotesize \textcolor{lime}{ずんだもん:} けっこうめんどうなのだ

\footnotesize \textcolor{pink}{四国めたん:} まあ、これがC言語の面倒なところであり長所でもあったりしますわね

\footnotesize \textcolor{pink}{四国めたん:} とりあえず当面は int型float型 の2種類を覚えておきましょう

\footnotesize \textcolor{lime}{ずんだもん:} int型float型 とはどのような 変数の型 なのだ?

\footnotesize \textcolor{pink}{四国めたん:} intは、多分 integer の略で整数値を入れられますわ

\footnotesize \textcolor{pink}{四国めたん:} floatはその名の通り浮動小数点数を入れられますわ

\footnotesize \textcolor{lime}{ずんだもん:} なるほどなのだ

\footnotesize \textcolor{lime}{ずんだもん:} でも2種類だけで大丈夫なのか?

\footnotesize \textcolor{pink}{四国めたん:} ほかの 変数の型 については、そのうちお話ししますわ

\footnotesize \textcolor{pink}{四国めたん:} でも特別に大きな数値を扱わない限り2種類でも色々なことができますわ

他の変数の型

C言語で使用できる基本的な 変数の型int型float型 を含め以下のような型があります

変数の型

変数の型 サイズ例 値の範囲例
char 1バイト -128~127もしくは0~255
unsigned char 1バイト 0~255
short 2バイト -32768~32767
unsigned short 2バイト 0~65535
int 4バイト -2147483648~2147483647
unsigned int 4バイト 0~4294967295
long 4バイト -2147483648~2147483647
unsigned long 4バイト 0~4294967295
long long 8バイト -9223372036854775808~9223372036854775807
unsigned long long 8バイト 0~18446744073709551615
float 4バイト 3.4E+/-38(7桁)
double 8バイト 1.7E+/-308(15桁)
long double 8バイト 1.7E+/-308(15桁)

基本的にはunsignedが前に付く整数型は0以上の範囲となります

また一般的には浮動小数点数型(float, double, long double)にはunsignedがありません

なお値の範囲についてはコンパイラやシステムによって変わります

なので新しい環境でプログラミングを行う場合には一度は確認した方が良いでしょう

上記例はWindows11でVisual Studioを使用した場合です

なお 値の範囲 について、上記のテーブルの順番が変わることはありません

例えばintshortの範囲が同じ場合はありますがintよりshortの範囲の方が広いことはありません

ちなみに真偽値を表す bool型 は現状では基本的な型には含まれていません

charについては最新の規格では1バイトとなっていますが古い規格に合わせたシステムでは2バイト以上の場合もあります

なおcharの値の範囲を-128~127に固定したい場合にはsigned charと表記します

変数の宣言

\footnotesize \textcolor{pink}{四国めたん:} 次は 変数の宣言 についてお話ししますわ

\footnotesize \textcolor{lime}{ずんだもん:} 変数の宣言 ?

\footnotesize \textcolor{pink}{四国めたん:} ええ、C言語では変数を使う前に必ず 宣言 を行う必要がありますわ

\footnotesize \textcolor{lime}{ずんだもん:} どのように 宣言 を行うのだ?

\footnotesize \textcolor{pink}{四国めたん:} 変数の宣言型 変数名のような形式で宣言を行いますわ

\footnotesize \textcolor{pink}{四国めたん:} 最初のプログラムの例ではint x;int y;変数の宣言 ですわね

\footnotesize \textcolor{lime}{ずんだもん:} わかったのだ

変数の初期化

\footnotesize \textcolor{pink}{四国めたん:} 最後は 変数の初期化 についてお話ししますわ

\footnotesize \textcolor{lime}{ずんだもん:} 変数の初期化

\footnotesize \textcolor{pink}{四国めたん:} 変数を宣言しただけでは 入れ物 を用意しただけなので中身には意味のないデータが入っていますわね

\footnotesize \textcolor{lime}{ずんだもん:} そうなのか?

\footnotesize \textcolor{pink}{四国めたん:} それでは最初のプログラムでy = 2;の行に ブレークポイント をセットし実行してみましょう

y=2にブレークポイント

\footnotesize \textcolor{pink}{四国めたん:} ブレークポイントの部分では既に x には 1 を入れているので値が 1 になっていますわ

\footnotesize \textcolor{pink}{四国めたん:} でも y には 2 を入れる前なので適当な値が表示されていますわね

yにゴミ

\footnotesize \textcolor{lime}{ずんだもん:} 本当なのだ

\footnotesize \textcolor{pink}{四国めたん:} ここで 続行 をクリックしますわね

\footnotesize \textcolor{lime}{ずんだもん:} 次の行のブレークポイントでプログラムが停止したのだ

\footnotesize \textcolor{pink}{四国めたん:} y2 が設定されているのが確認できるはずですわ

最後の行にブレークポイント

y=2に変化

\footnotesize \textcolor{pink}{四国めたん:} さらに 続行 をクリックしてプログラムを継続、停止しておきますわ

\footnotesize \textcolor{pink}{四国めたん:} このように宣言しただけでゴミが入った状態の変数にx = 1;y = 2;等と具体的な数値を割り当てることを 変数の初期化 と呼んでいますわ

\footnotesize \textcolor{pink}{四国めたん:} 変数の初期化 は必ず行うように習慣付けて下さい

\footnotesize \textcolor{lime}{ずんだもん:} わかったのだ

変数の宣言と初期化

\footnotesize \textcolor{pink}{四国めたん:} ところで 変数の宣言初期化 は同時に行う事が可能ですわ

\footnotesize \textcolor{pink}{四国めたん:} むしろ 変数の宣言初期化 は同時に行う方がいいですわね

\footnotesize \textcolor{lime}{ずんだもん:} 変数の宣言初期化 を同時に行うにはどうしたらいいのだ?

\footnotesize \textcolor{pink}{四国めたん:} 形式としては型 変数名 = 初期値;のようになりますわ

\footnotesize \textcolor{pink}{四国めたん:} 例えば最初のプログラムはこのようにすることができますわね

#include <stdio.h>

void main() {
  int x = 1;
  int y = 2;
}

\footnotesize \textcolor{lime}{ずんだもん:} なるほどなのだ

\footnotesize \textcolor{pink}{四国めたん:} ここで ローカルWindowsデバッガー をクリックして実行してみましょう

\footnotesize \textcolor{pink}{四国めたん:} 最後の行のブレークポイントでプログラムを停止すると変数 xy にそれぞれ 12 が入っていますわね

宣言と初期化後にブレークポイント

x=1, y=2

\footnotesize \textcolor{lime}{ずんだもん:} たしかに変数が初期化されているのだ

\footnotesize \textcolor{pink}{四国めたん:} ここで yfloat型 に変更してみましょう

#include <stdio.h>

void main() {
  int x = 1;
  float y = 2;
}

\footnotesize \textcolor{pink}{四国めたん:} それでは ローカルWindowsデバッガー をクリックして実行してみましょう

\footnotesize \textcolor{pink}{四国めたん:} 最後の行でブレークポイントでプログラムを停止すると変数 y2.00000000 と小数が入っていますわね

yをfloatに変更後にブレークポイント

x=1, y=2.00000000

\footnotesize \textcolor{lime}{ずんだもん:} ほんとうなのだ

\footnotesize \textcolor{lime}{ずんだもん:} でもこの例では y2 という整数で初期化しているのに、おかしいのだ

\footnotesize \textcolor{pink}{四国めたん:} それはプログラムが上手いこと処理してくれている結果ですわ

\footnotesize \textcolor{lime}{ずんだもん:} "yはfloatだから浮動小数点の数値しか入れられないから2という整数を2.00000000という小数に変換して入れてあげよう"と…

\footnotesize \textcolor{pink}{四国めたん:} そうゆうことですわね

\footnotesize \textcolor{pink}{四国めたん:} あまり良いことではないので、ちゃんと小数で初期化してあげましょう

#include <stdio.h>

void main() {
  int x = 1;
  float y = 2.0;
}
浮動小数点数の記述について

浮動小数点数の記述については幾つかの方法があります

1/20を表す浮動小数点数を例に取ると以下のような書き方があります

  • 0.05
  • 0.05f
  • .05
  • .05f
  • 0.5e-1
  • 0.5e-1f
  • .5e-1
  • .5e-1f
  • 5.e-2
  • 5.e-2f

結構、色々な書き方があります

なお後ろに"f"を付けると float型 を明示することになりますが、通常は使用する必要はありません

ちなみに整数部分が"0"の場合には省略することができます

まとめ

\footnotesize \textcolor{pink}{四国めたん:} ということで今回は変数と型について簡単にお話ししました

\footnotesize \textcolor{pink}{四国めたん:} 変数と型についてはもっといろいろとこまかい話があるのですが、次回以降に持ち越しですわね

\footnotesize \textcolor{lime}{ずんだもん:} 今回は最小限の部分だけなのだ

\footnotesize \textcolor{pink}{四国めたん:} お疲れさまでした

\footnotesize \textcolor{lime}{ずんだもん:} おつかれさまなのだ

Discussion