さて、ここからいよいよ VS2022 を使って、少しずつですが、いろいろ試していきます。まずは処理の要である変数宣言についてです。
--
いきなりここに飛んで来ちゃった人は、よろしければ下記からご覧ください。
C言語基礎講座インデックス


  • 数値(定数)
C言語で扱えるのは大きく分けると、整数実数文字の3種類です。整数とは小数がない数値です。-5, 1, 10, 1024 等といった数値は整数です。自然数…と言いたいところですが、ゼロやマイナスの値も扱うので、整数は小数がない数字と覚えてください。

実数は反対に小数を含む数値です。3.14 や 9.8 という数値が実数です。コンピュータでは整数と実数は別物として扱われます。混ぜて使うと勝手に変換される事もあれば、エラーになって変換されない事もあります。この型の変換に関しては後日説明します。

コンピュータから見ると文字は整数です。その整数に対して、どの番号がどの文字かと決められています。例えば、65 は A という文字と決められています。英数と基本的な記号は共通して決められていますが、それ以外の文字に関しては、国や地域によって決め方がバラバラです。VS2022 ではその差を Unicode(UTF-8)という文字コードを用いる事である程度は自動で吸収しています。…という事で、文字に関してはここでは深くは突っ込まないでください。
※ 文字コードの世界は奥(闇?)が深いんです…

さて、数値や文字をプログラム内で記述しますが、これらは値が変わる事が無いため、定数と呼ばれています。定数には種類があります。書き方によって意味が変化します。代表的な例を列挙してみます。

 10 整数
 0x1234 整数(16進数表現)
 0b11001001 整数(2進数表現)
 3.1415926 実数
 9.8F    実数(float)※ 後述
 'A' 文字
 "ABC" 文字列

文字列は文字が連続している状態です。このように、数字や文字の書き方でもいくつかの種類があります。2進数や16進数の事を知りたい場合は、こちらの記事を参照してください。なお、誤って 01234 と記述してしまうと、8進数表記となります。エラーにならず、また想定外の数値として扱われる事になりますのでご注意ください。

小数が付いている数値の末尾に F を付けているのは、この定数の型が float の型であると明示するためです。何も明示しなくてもコンパイルは(おそらく)通ると思いますが、型に煩い人に付けろと指摘を受ける部分なので、まあ付けた方が良いでしょう。私ですか?当然付けてますヨ!


  • 変数
プログラムは、変数と呼ばれる数字や文字の入れ物を用意して、その入れ物を使って数値計算や文字列の切った貼ったくっつけたを繰り返して、目的の数値を作る動き(出力)をします。そのため、最も基本の部分はまず変数の理解からとなります。

この数値の種類の違いはと呼んで管理しています。整数、実数、文字の型の代表的なモノが以下となります。

整数 int
実数 float
文字 char

この型を使って、数値の入れ物である変数を定義します。少し変数を作ってみます。

int num; float rate; char moji;
int や float が型です。num や rate や moji が変数です。変数の名前は、だいたいどんな名前でも指定できます。出来ないのは数字から始める事ぐらいです。ソースコードは UTF-8 で管理されているため、変数名にひらがなカタカナ漢字まで使えてしまいます…が、大抵の事には寛容な私も、変数名は英数字で記述して欲しいです。簡単に記述例を挙げると…

int 整数値 = 5; float gravity = 9.8F; char _tmpMoji = 'A';

これはコンパイルが出来ます。出来ますが、「整数値」という変数名は value のように英語で書いて欲しいです。本当にお願いします。こう最初に説明しておかないと、専門学校教師時代の経験から自分で名前を付けて「おお!日本語使えるじゃん!読みやすいよ、俺って天才だー!」っていう人が必ず出ますので(汗

次に出来ない例を提示します。

int num-1 = 50;
int auto = 100;
float 0point = 0.0; char err = "Error"

num-1 という名称は -1 を引き算と見なしてしまうので記述できません。同様に + 等も使えません。auto という名称は予約語なので使えません。0point という名称は数字から始まっているので使えません。err 変数(char型)に文字は半角文字を1つしか入れられないので文字列は入れられません。

できません、使えません、入れられません…
ウゼェエエェエエェエェ
はぁはぁはぁはぁ・・・
※ 屋根裏収納に使おうかと購入検討中。排気ダクトの処理さえなんとかすれば、かなりイケてる気がしています。
…ですよね(汗 でも、安心してください。履いてまsだからこその VS2022 なのです。お手元で適当に変数宣言してみてください。使えない変数名を入力すると、即座に赤い下線により指摘してくれます。
宣言できない変数を赤い下線でお知らせ
あと、変数宣言の後ろの ; は区切りです。C言語は改行とかは全く関係なくて、この ; を区切りとして判定します。そのため…

int num; float rate; char moji;
なんて書いても正常にコンパイルされます。バイナリに変換する処理をコンパイルとかビルドとか呼びます。ビルドが通ったからヨシとすると、他の人が読みづらいので、だいたいは1行1命令で記述しています。これをコーディングポリシーとか言って、仕事だと職場やプロジェクト毎に、プログラムの書き方が定められていたりします。
※ あえて、1行に複数の命令を記述する事もあります。

余談ですが、内藤的にはファイル一つに対する変換処理をコンパイル、プロジェクト全体をコンパイルする事をビルドと区別しています。…が、ちょくちょく混ざります(汗

話が前後してしまいますが、この変数に値を入れるのが = です。算数の =(イコール)と異なり、C言語では代入という意味です。右から左に入れると決められています。例えば、num に 5 を入れようと思ったら、

num = 5;
このように記述します。num はこれで 5 という数値を保持する事になりました。このように、値が変わるから変わる数なので変数です。これとは別に値の変更が出来ない数の事を定数と呼びます。定まった数なので「定数」です。num が変数で、5 が定数です。

文字の代入はシングルクォート ' を用います。例えば変数に A を代入する場合は、

moji = 'A';
このように記述します。この結果、moji には 65(16進数で 0x41)が代入されます。是非ステップトレースで変数の値を確認してみてください。殆どの場合、文字を数値で語る場合は 16進数を用います。理由は文字コード表を読むのに、16進数の方が便利だからです。
キャラクタコード表
これは文字の数値と扱う事が出来る文字に対応しているキャラクタコード表です。この表は、どの環境でもほぼ使用可能なキャラクタコードだけを抜き出しています。上位4bitを、下位4bitをで表しています。
※ MZ-80K 等特殊な文字コード環境もレトロPCにはあります…
例えば、英小文字の c だと、上位が 6、下位が 3 ですので、16進数としては 0x63 となります。先頭の 0x は16進数である事を表しています。先に例に挙げた A は、0x41 なのが、この表から読み取れますでしょうか。

なお、扱える文字は半角文字だけです。かな漢字交じり日本語を変数で扱えるようになるには、まだ少し遠い道のりですね…。


  • まとめ
  1. 変数と定数がある。
  2. 型や数値には整数、実数、文字の種類がある。
  3. 変数宣言には型を指定する。
  4. 変数名に使用できない文字がある。
  5. 文字は整数で表される。
型についてより詳しい説明を読んでみたい場合は、こちらを読んでみてください。C言語を学ぶ上で基礎の段階では必須の知識ではありませんが、興味を持つのは大事かなと思います。書いてある事が分からなくても「へー」で済ませてもらって構いません。

>> C言語基礎講座インデックスに戻る

良かったらポチって頂けるとやる気が上がります!※ リンク先を購入する必要はありません。
※ DCモーターと収納時の小ささでかなりイケてる扇風機です。エアコンと組み合わせるとかなり最高ですね!