C++入門|C言語の変数と計算

変数は数値を入れる修行用の器、演算はその力を組み合わせる技。C言語の変数と計算を覚えれば、プログラムの中で戦闘力を自在に扱えるようになります。

C言語の基本的なプログラムの形が分かってきたら、次に学びたいのが 変数演算 です。

変数とは、数値や文字などのデータを入れておくための入れ物です。演算とは、そのデータを使って計算することです。

ドラゴンボール風にたとえるなら、変数は戦闘力や修行回数を記録しておくスカウターのメモリです。そして演算は、その数値を使って、合計したり、差を求めたり、何倍になったかを計算したりする技です。

たとえば、ある戦士の基礎戦闘力が8、修行回数が3だとします。この2つの数値を変数に入れておけば、足し算、引き算、掛け算、割り算、余りの計算などをプログラムの中で行えます。

C言語では、数値を直接書いて計算するだけでなく、変数に値を入れてから計算することがよくあります。変数を使うことで、同じ値を何度も利用したり、あとから値を変更したりしやすくなります。

学ぶ内容意味ドラゴンボール風のイメージ
変数データを入れる入れ物戦闘力を記録する器
代入変数に値を入れることスカウターに数値を登録する
演算数値を使って計算すること戦闘力を組み合わせて分析する
演算子計算に使う記号足し算や掛け算の技の合図
書式指定表示する値の形を決める記号表示パネルに数値を出すための枠

最初は、変数や演算子という言葉が少し難しく感じるかもしれません。

でも、考え方はとてもシンプルです。

数値を箱に入れる。
箱の中の数値を使って計算する。
計算結果を画面に表示する。

まずは、この流れをつかんでいきましょう。

変数と演算を使ったプログラム

まずは、変数と演算を使ったプログラムを見てみましょう。

ここでは、戦闘力を表す値と、修行回数を表す値を変数に入れて、いくつかの計算を行います。

プロジェクト/ファイル名: Chap1_02/main.c

#include <stdio.h>

/*
  変数を使った修行サンプル
  戦闘力と修行回数を代入して計算する
*/
int main(int argc, char** argv) {
    // 整数を入れる変数を宣言する
    int power, training;

    // 変数に値を代入する
    power = 8;
    training = 3;

    // 変数同士の計算結果を表示する
    printf("%d + %d = %d\n", power, training, power + training);
    printf("%d - %d = %d\n", power, training, power - training);
    printf("%d * %d = %d\n", power, training, power * training);
    printf("%d / %d = %d\n", power, training, power / training);
    printf("%d %% %d = %d\n", power, training, power % training);

    // プログラムが正常に終わったことを示す
    return 0;
}

このプログラムを実行すると、次のような結果が表示されます。

8 + 3 = 11
8 - 3 = 5
8 * 3 = 24
8 / 3 = 2
8 % 3 = 2

このプログラムでは、powerという変数に8、trainingという変数に3を入れています。

そのあと、powerとtrainingを使って、足し算、引き算、掛け算、割り算、余りの計算を行い、その結果をprintfで表示しています。

変数入っている値ドラゴンボール風のイメージ
power8戦士の基礎戦闘力
training3修行回数や強化ポイント

powerとtrainingは、ただの数字ではなく、意味のある名前が付いた入れ物です。

このように、変数名を工夫すると、プログラムを読んだときに何を表しているのか分かりやすくなります。

図:変数は数値を入れる修行用の器

この図が示していること

この図では、変数が数値を入れるための器であることを表しています。

powerという器には8、trainingという器には3が入っています。C言語では、このように変数に名前を付けて値を保存し、その値をあとから計算に使うことができます。

ドラゴンボール風に見ると、戦闘力や修行回数をエネルギーカプセルに保存しておき、必要な場面で取り出して計算するイメージです。

コメントはプログラムを読みやすくするメモ

プログラムの中には、次のような部分があります。

/*
  変数を使った修行サンプル
  戦闘力と修行回数を代入して計算する
*/

また、次のような行もあります。

// 整数を入れる変数を宣言する

これらはコメントです。

コメントは、プログラムの中に書ける説明文です。コンピュータはコメントを命令として実行しません。あくまで、人間が読むためのメモです。

ドラゴンボール風にたとえるなら、コメントは修行メニューの横に書かれた補足説明です。

この修行は何のために行うのか、この数値は何を表しているのか、あとから見ても分かるように書いておく役割があります。

記述方法名前特徴
/* */ブロックコメント複数行にわたって説明を書ける
//行コメント1行だけ説明を書ける

ブロックコメントは、長めの説明を書きたいときに便利です。

行コメントは、特定の行や処理の意味を短く説明したいときに便利です。

学習中は、コメントをしっかり書くと理解しやすくなります。特に変数や演算を学び始めたばかりのころは、この変数には何を入れているのか、この計算は何をしているのかを書いておくと、復習するときに役立ちます。

変数とはデータを入れる箱

C言語で計算をするときによく使うのが変数です。

変数とは、数値などのデータを入れておくための箱のようなものです。

今回のプログラムでは、次のように変数を宣言しています。

int power, training;

これは、整数を入れるための変数powerとtrainingを用意する、という意味です。

intは、整数を扱うためのデータ型です。powerとtrainingは変数名です。

部分意味
int整数を扱うデータ型
power戦闘力を入れる変数名
training修行回数を入れる変数名
,複数の変数を区切る記号
;宣言の終わり

ドラゴンボール風にたとえるなら、int power, training; は、戦闘力用の器と修行回数用の器を用意する命令です。

まだこの時点では、器を用意しただけです。中にどんな数値を入れるかは、次の代入で決めます。

変数は名前を付けて区別する

変数は、複数作ることができます。

そのため、それぞれに名前を付けて区別します。

今回のプログラムでは、powerとtrainingという名前を使っています。aやbのような短い名前も使えますが、意味のある名前にすると、プログラムが読みやすくなります。

変数名分かりやすさ
a短いが、何を表すか分かりにくい
b短いが、意味を読み取りにくい
power戦闘力を表していると分かりやすい
training修行回数を表していると分かりやすい

C言語の変数名にはルールがあります。

ルール
半角英文字、数字、アンダーバーなどを使えるpower、num1、training_count
先頭を数字にできないpower1は使えるが、1powerは使えない
大文字と小文字は区別されるPowerとpowerは別の変数
予約語は変数名にできないintなどは変数名にしない

予約語とは、C言語の中であらかじめ意味が決まっている単語です。

たとえばintは、整数を表すデータ型として使われています。そのため、intという名前の変数を作ることはできません。

ドラゴンボール風にたとえるなら、予約語は修行場ですでに特別な意味を持つ合図です。特別な合図を勝手に戦士の名前として使うと、修行装置が混乱してしまいます。

データ型は変数に入れる値の種類を決める

変数を宣言するときには、データ型を指定します。

データ型とは、その変数にどのような種類の値を入れるのかを決めるものです。

今回使っているintは、整数を扱うためのデータ型です。

int power, training;

この場合、powerとtrainingには、8や3のような整数を入れることができます。

ドラゴンボール風にたとえるなら、データ型は器の種類です。戦闘力のような整数を入れる器、細かい小数を入れる器、1文字を入れる器など、入れたいデータに合わせて器を選びます。

データ型主な用途ドラゴンボール風のイメージ
char1文字や小さな整数1文字の合図を入れる小さな札
int整数戦闘力や回数を入れる基本の器
long大きめの整数巨大な戦闘力を入れる大きな器
float小数を含む数値細かい気の量を測る器
doubleより精度の高い小数精密なエネルギー測定器

C言語には、整数、小数、文字など、扱うデータに合わせてさまざまなデータ型があります。

最初の段階では、整数を扱うintをしっかり理解することが大切です。

代入は変数に値を入れること

変数を用意したら、次に値を入れます。

この作業を代入といいます。

今回のプログラムでは、次のように代入しています。

power = 8;
training = 3;

これは、powerに8を入れ、trainingに3を入れるという意味です。

記述意味
power = 8;powerに8を代入する
training = 3;trainingに3を代入する

ここで使っている=は、数学の等しいという意味とは少し違います。

C言語では、=は右側の値を左側の変数に入れるという意味です。

つまり、power = 8; は、powerと8が等しいと主張しているのではなく、powerという器に8を入れる処理です。

ドラゴンボール風にたとえるなら、powerというエネルギーカプセルに戦闘力8を注入し、trainingというカプセルに修行回数3を入れている状態です。

図:代入は変数の器に値を入れること

この図が示していること

この図では、代入が変数という器に値を入れる操作であることを表しています。

powerという器には8、trainingという器には3を入れています。C言語では、=を使って右側の値を左側の変数に代入します。

数学の等号とは意味が少し違うため、最初は右の値を左の箱に入れると考えると分かりやすくなります。

初期化とは最初に値を入れること

変数に最初に値を入れることを初期化といいます。

今回のプログラムでは、powerとtrainingを宣言したあとに、それぞれ値を代入しています。

int power, training;

power = 8;
training = 3;

このように、変数を用意してから最初に値を入れることが初期化です。

C言語では、値を入れていない変数をそのまま使うと、予想しない値が入っている場合があります。そのため、変数を使う前には、きちんと値を代入しておくことが大切です。

ドラゴンボール風にたとえるなら、空のスカウターに数値を入れないまま戦闘力を読もうとするようなものです。正しい値が入っていなければ、結果も信用できません。

変数の値はあとから変えられる

変数は、名前のとおり値を変えられます。

たとえば、powerに8を入れたあとで、別の値を代入すれば、powerの中身は変わります。

power = 8;
power = 12;

この場合、最初はpowerに8が入りますが、そのあと12が代入されるため、最終的にpowerの値は12になります。

ドラゴンボール風に言えば、修行によって戦闘力が上がり、スカウターに記録される値が更新されるイメージです。

変数は、プログラムの中で状況に応じて値を変えられるため、とても便利です。

演算とは計算すること

変数に値を入れたら、その値を使って計算できます。

プログラミングの世界では、計算のことを演算と呼びます。

今回のプログラムでは、powerとtrainingを使って、次のような計算をしています。

power + training
power - training
power * training
power / training
power % training

これらは、足し算、引き算、掛け算、割り算、余りの計算です。

意味結果
power + training8 + 311
power - training8 - 35
power * training8 * 324
power / training8 / 32
power % training8を3で割った余り2

C言語では、掛け算に*を使い、割り算に/を使います。

数学でよく使う×や÷は、C言語の演算子としては使いません。

算術演算子を覚えよう

演算に使う記号のことを演算子といいます。

C言語の計算でよく使う算術演算子は、次のとおりです。

演算子読み方意味使用例
+プラス足し算7 + 3
-マイナス引き算7 - 3
*アスタリスク掛け算7 * 3
/スラッシュ割り算7 / 3
%パーセント割り算の余り7 % 3

ドラゴンボール風にたとえるなら、演算子は戦闘力を分析するための技の種類です。

+は力を合わせる技、-は差を見る技、*は何倍の効果になるかを見る技、/は均等に分ける技、%は余ったエネルギーを見る技です。

特に%は、最初は少し分かりにくいかもしれません。

7 % 3は、7を3で割ったときの余りを求めます。7 ÷ 3は2余り1なので、7 % 3の結果は1です。

整数同士の割り算では小数部分が切り捨てられる

今回のプログラムでは、powerもtrainingもint型です。

int型は整数を扱うデータ型です。そのため、int型同士で割り算をすると、結果も整数になります。

power / training

powerは8、trainingは3なので、数学的には8 ÷ 3 = 2.666...です。

しかし、C言語でint型同士の割り算を行うと、小数部分は表示されません。

そのため、結果は2になります。

計算数学での結果int型同士のC言語での結果
8 / 32.666...2

これは、初心者がよくつまずくポイントです。

小数を扱いたい場合は、floatやdoubleのような小数を扱えるデータ型を使う必要があります。

ドラゴンボール風にたとえるなら、int型の器は整数だけを記録するスカウターです。細かい小数の気のゆらぎまでは記録せず、整数の部分だけを表示するイメージです。

計算には優先順位がある

C言語の計算には、数学と同じように優先順位があります。

掛け算と割り算は、足し算と引き算より先に計算されます。

たとえば、次の式を考えてみます。

2 + 3 * 2

この場合、先に3 * 2が計算されます。

そのため、結果は8になります。

2 + 3 * 2 = 8

一方、カッコを使うと、計算の順番を変えることができます。

(2 + 3) * 2

この場合は、先に2 + 3が計算されます。

そのため、結果は10になります。

(2 + 3) * 2 = 10
計算順序結果
2 + 3 * 23 * 2を先に計算8
(2 + 3) * 22 + 3を先に計算10

ドラゴンボール風にたとえるなら、技を出す順番によって結果が変わるようなものです。

先に気を高めてから攻撃するのか、攻撃してから強化するのかで、結果が変わるイメージです。

printfで計算結果を表示する

今回のプログラムでは、printfを使って計算結果を表示しています。

printf("%d + %d = %d\n", power, training, power + training);

この行では、文字列の中に%dが3つあります。

%dは、整数を表示するための書式指定です。

そのあとに、power、training、power + trainingがコンマで区切られて並んでいます。

このとき、最初の%dにはpowerの値、次の%dにはtrainingの値、最後の%dにはpower + trainingの計算結果が入ります。

表示枠入る値実際の値
1つ目の%dpower8
2つ目の%dtraining3
3つ目の%dpower + training11

そのため、実行結果は次のようになります。

8 + 3 = 11

ドラゴンボール風にたとえるなら、%dは表示パネルに数値をはめ込むための空欄です。

powerやtrainingの値が、その空欄に順番に入って表示されます。

図:printfの%dに値が順番に入る仕組み

この図が示していること

この図では、printfの文字列にある%dへ、後ろに並んだ値が順番に入る仕組みを表しています。

1つ目の%dにはpowerの値である8が入り、2つ目の%dにはtrainingの値である3が入ります。そして3つ目の%dには、power + trainingの計算結果である11が入ります。

printfを使うと、文字列の中に数値を埋め込んで、計算結果を分かりやすく表示できます。

書式指定は表示するデータの形を決める

printfでは、%d以外にもさまざまな書式指定を使えます。

書式指定とは、どのような形でデータを表示するかを指定する記号です。

書式意味使用例
%d整数を10進数で表示する1、12、30、-4
%x整数を16進数で表示する1、a、10
%f実数を表示する1.2、2.7
%lfdouble型の実数を表示する1.2、2.7
%c1文字を表示するA、b
%s文字列を表示するABC、日本語

今回のプログラムでは、int型の整数を表示しているため、%dを使っています。

もし小数を表示したい場合は%f、文字列を表示したい場合は%sのように、表示するデータに合った書式指定を使います。

ドラゴンボール風にたとえるなら、書式指定は表示パネルの表示モードです。戦闘力を整数で表示するのか、細かい気の量を小数で表示するのか、名前を文字列で表示するのかによって、表示モードを切り替えます。

変数と計算の流れを整理しよう

今回のプログラムでは、次の流れで処理が進みます。

順番処理内容
1ヘッダーファイルを読み込むprintfを使えるようにする
2main関数から開始するプログラムの処理が始まる
3変数を宣言するpowerとtrainingを用意する
4値を代入するpowerに8、trainingに3を入れる
5演算する足し算、引き算、掛け算、割り算、余りを求める
6結果を表示するprintfでコンソールに出力する
7return 0で終了する正常終了を知らせる

この流れが分かると、C言語で計算するプログラムの基本が見えてきます。

変数を用意し、値を入れ、演算子を使って計算し、printfで結果を表示する。

この流れは、今後もっと複雑なプログラムを作るときにも何度も使います。

変数と演算はC言語学習の大事な基礎

C言語では、変数と演算を使うことで、プログラムの中で数値を扱えるようになります。

変数が使えるようになると、ただ決まった文字を表示するだけでなく、数値を保存したり、計算したり、結果を表示したりできます。

演算が分かると、足し算や掛け算だけでなく、条件分岐や繰り返し処理の中でも数値を活用できるようになります。

できるようになること
数値を保存する戦闘力や修行回数を記録する
数値を変更する修行後に戦闘力を更新する
計算する合計、差、倍率、余りを求める
結果を表示するコンソールに計算結果を出す

最初は、int、変数名、代入、演算子、%dなど、覚える言葉が多く感じるかもしれません。

でも、ひとつずつ役割を見ていけば大丈夫です。

C言語の変数と計算は、ドラゴンボール風に言えば、戦闘力を測り、修行で増やし、結果をスカウターに表示するための基本技です。

この基本技を覚えることで、C言語のプログラムは一気にできることが広がります。次に条件分岐や繰り返しを学ぶときにも、この変数と演算の考え方がしっかり土台になります。