6日でできる 新C言語入門|算術演算と変数の使い方

計算した値を、変数に入れて、次の処理へつなげる。
算術演算と変数を理解して、C言語プログラムの基本を身につけよう。

C言語でプログラムを書くとき、最初にしっかり理解しておきたいテーマが算術演算と変数です。算術演算とは、足し算、引き算、掛け算、割り算、余りを求める計算のことです。C言語では、これらの計算を演算子という記号を使って表します。

たとえば、+は足し算、-は引き算、は掛け算、/は割り算、%は割り算の余りを求める演算子です。普段の算数や数学と似ている部分もありますが、C言語では掛け算に×ではなくを使い、割り算に÷ではなく/を使う点に注意が必要です。

そして、計算した値を保存しておくために使うのが変数です。変数は、値を入れておく名前付きの箱のようなものです。たとえば、商品の価格、個数、合計金額、平均値など、プログラムの中で使いたい値を変数に入れて管理できます。

C言語では、変数を使う前に、どのような種類の値を入れるのかを宣言します。整数を扱うならint型、小数を扱うならdouble型など、値の種類に応じて型を選びます。変数と演算を組み合わせることで、プログラムの中で計算結果を保存したり、別の計算に利用したりできるようになります。

この記事では、C言語で使う基本的な算術演算子、整数の割り算と余り、変数の宣言と代入、コメントの書き方について、サンプルプログラムを使いながら分かりやすく解説していきます。

算術演算とは

算術演算とは、数値を使って計算する処理のことです。C言語では、足し算や引き算のような基本的な計算を、演算子という記号で表します。

算術演算は、C言語のさまざまな場面で使われます。商品の合計金額を求める、点数の合計を計算する、残り時間を求める、割り算の余りで偶数や奇数を判定するなど、基本的なプログラムの中でもよく登場します。

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

C言語で掛け算を書くときは、数学で使う×ではなく*を使います。また、割り算では÷ではなく/を使います。これらはC言語だけでなく、多くのプログラミング言語でも共通して使われる書き方です。

%は剰余演算子と呼ばれ、割り算をしたときの余りを求めます。たとえば、12 % 5は、12を5で割った余りを求めるため、結果は2になります。

図:C言語で使う基本の算術演算子

この図から分かること

この図から分かるのは、C言語では計算の種類ごとに専用の演算子を使うという点です。足し算や引き算は日常的な記号に近いですが、掛け算は*、割り算は/、余りは%を使います。

特に*、/、%は、C言語を始めたばかりの人が最初に覚えておきたい演算子です。計算式を読むときに、どの記号がどの計算を表しているのかを意識すると、プログラムの動きが理解しやすくなります。

算術演算を使ったサンプルプログラム

まずは、算術演算子を使って計算結果を表示するプログラムを見てみましょう。ここでは、2つの整数を使って、足し算、引き算、掛け算、割り算、余りを確認します。

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

#include <stdio.h>

int main(void) {
    // 2つの整数を使って、基本的な算術演算を確認する
    printf("%d + %d = %d\n", 15, 4, 15 + 4);          // 足し算
    printf("%d - %d = %d\n", 15, 4, 15 - 4);          // 引き算
    printf("%d * %d = %d\n", 15, 4, 15 * 4);          // 掛け算
    printf("%d / %d = %d 余り %d\n", 15, 4, 15 / 4, 15 % 4); // 割り算と余り

    return 0;
}

実行結果

15 + 4 = 19
15 - 4 = 11
15 * 4 = 60
15 / 4 = 3 余り 3

このプログラムでは、printf関数を使って計算式と結果を表示しています。%dは整数を表示するための書式指定子です。計算式の結果も整数として表示されます。

15 / 4の結果は3です。数学では3.75になりますが、C言語で整数同士を割り算すると、小数部分は切り捨てられます。そのため、15を4で割った整数部分として3が表示されます。

余りを求める15 % 4の結果は3です。15を4で割ると、4が3回入り、余りが3になります。このように、/と%を組み合わせると、割り算の商と余りを別々に求められます。

整数の割り算に注意する

C言語では、整数同士の割り算を行うと、結果も整数として扱われます。そのため、小数部分は表示されません。

たとえば、15 / 4は3.75ではなく3になります。これは、int型の整数同士で計算しているためです。小数まで求めたい場合は、double型などの小数を扱える型を使う必要があります。

結果説明
15 / 43整数同士の割り算なので小数部分が切り捨てられる
15 % 4315を4で割った余り
16 / 44割り切れるため余りは出ない
16 % 4016を4で割った余りは0

整数の割り算と余りは、プログラムでよく使われます。たとえば、偶数か奇数かを調べるときには、数値を2で割った余りを見る方法があります。余りが0なら偶数、1なら奇数と判断できます。

また、秒数を分と秒に分ける、ページ番号を計算する、一定の個数ごとに区切る、といった処理でも/と%は役立ちます。

演算子の優先順位

C言語の演算には優先順位があります。これは、どの計算を先に行うかを決めるルールです。基本的には数学と同じように、掛け算、割り算、余りは、足し算や引き算より先に計算されます。

計算の流れ結果
2 + 3 * 43 * 4を先に計算し、その後2を足す14
(2 + 3) * 42 + 3を先に計算し、その後4を掛ける20
20 - 6 / 26 / 2を先に計算し、その後20から引く17

計算の順番を明確にしたいときは、丸かっこを使います。丸かっこの中は先に計算されるため、読み手にも意図が伝わりやすくなります。

C言語では、複雑な計算式を書くこともできますが、最初のうちは無理に1行に詰め込まず、分かりやすい式にすることが大切です。計算式が長くなる場合は、途中の結果を変数に入れると読みやすくなります。

変数は値を入れておく名前付きの箱

変数とは、値を保存しておくための名前付きの領域です。よく箱にたとえられます。箱に名前を付けておくことで、あとからその値を使ったり、別の値に入れ替えたりできます。

C言語では、変数を使う前に宣言が必要です。宣言とは、この名前の変数を使います、そしてこの変数にはこの種類の値を入れます、とコンパイラに伝えることです。

用語意味
変数値を保存するための名前付きの領域
変数に入れる値の種類
宣言変数を使うことをあらかじめ知らせる
初期化変数を作ると同時に最初の値を入れる
代入変数に値を入れる

たとえば、整数を扱う変数を作るにはint型を使います。int price = 120;のように書くと、priceという名前の整数型変数を作り、最初の値として120を入れることになります。

変数を使うことで、同じ値を何度も直接書かなくてよくなります。また、計算結果に名前を付けられるため、プログラムの意味が分かりやすくなります。

図:変数は値を保存する箱のようなもの

この図から分かること

この図から分かるのは、変数が値を保存するための名前付きの箱として考えられるという点です。

priceには単価、countには個数、totalには合計のように、値に意味のある名前を付けておくと、プログラムが読みやすくなります。変数を使うことで、計算に使う値や計算結果を整理して扱えるようになります。

変数を使ったサンプルプログラム

次に、変数を使って計算するプログラムを見てみましょう。ここでは、商品の単価と個数から合計金額を求めます。

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

#include <stdio.h>

int main(void) {
    // 商品の単価と個数を変数に保存する
    int price = 150;   // 1個あたりの価格
    int count = 6;     // 購入する個数

    // 単価と個数を掛けて合計金額を求める
    int total = price * count;

    // 変数の値と計算結果を表示する
    printf("単価 = %d円, 個数 = %d個\n", price, count);
    printf("合計金額 = %d円\n", total);

    return 0;
}

実行結果

単価 = 150円, 個数 = 6個
合計金額 = 900円

このプログラムでは、price、count、totalという3つの変数を使っています。priceには単価、countには個数、totalには計算結果を保存しています。

int total = price * count;では、priceとcountの値を使って掛け算を行い、その結果をtotalに入れています。変数を使うことで、計算式の意味が分かりやすくなります。

もし単価や個数を変更したい場合も、priceやcountの値を変えるだけで計算結果が変わります。これが変数を使う大きなメリットです。

変数名は意味が分かる名前にする

変数には好きな名前を付けられますが、何を表す値なのか分かりやすい名前にすることが大切です。たとえば、aやbのような名前は短く書けますが、プログラムが長くなると何の値なのか分かりにくくなります。

変数名分かりやすさ
a何を表す値か分かりにくい
b何を表す値か分かりにくい
price価格を表していると分かる
count個数を表していると分かる
total合計を表していると分かる

学習の最初は短いプログラムが多いため、aやbでも理解できることがあります。しかし、実際のプログラムでは意味が分かる名前を付ける習慣が大切です。

C言語では、変数名に日本語を使うことは一般的ではありません。基本的には半角英数字とアンダースコアを使い、英単語を組み合わせて意味が分かる名前にします。

変数の値はあとから変更できる

変数という名前の通り、変数に入っている値はあとから変更できます。これを代入と呼びます。

たとえば、最初にpriceへ150を入れておき、あとからprice = 180;のように書くと、priceの値を180に変更できます。計算結果も、変数の値が変われば変わります。

操作内容
int price = 150;priceを宣言し、150で初期化する
price = 180;priceに180を代入する
total = price * count;priceとcountを使ってtotalを計算する

C言語では、=は等しいという意味ではなく、右側の値を左側の変数に代入するという意味です。数学の等号とは少し考え方が違うので注意しましょう。

たとえば、total = price * count;は、price * countの計算結果をtotalに入れる、という意味です。左から右へ等しいと読むのではなく、右の結果を左へ入れると考えると分かりやすくなります。

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

コメントは、プログラムの中に書ける説明文です。コメントとして書いた部分は、コンパイル時にプログラムの処理としては扱われません。人間がコードを読みやすくするためのメモとして使います。

C言語には、主に2種類のコメントがあります。

記述方法名前特徴
// コメント行コメント//から行末までがコメントになる
/* コメント */ブロックコメント複数行や文の途中にもコメントを書ける

コメントは、処理の目的や注意点を残すために使います。特に学習中は、何をしている処理なのかを日本語で書いておくと、あとから見返したときに理解しやすくなります。

ただし、すべての行に細かくコメントを書く必要はありません。変数名や処理の内容から分かる部分には無理に書かず、少し説明が必要な部分に書くと読みやすくなります。

図:コメントで処理の意図を残す

この図から分かること

この図から分かるのは、コメントがプログラムの動作そのものではなく、読み手の理解を助けるための説明であるという点です。

C言語では、コードだけでは処理の意図が分かりにくい場合があります。コメントを使うと、なぜその計算をしているのか、どの値を表示しているのかを補足できます。学習中は、日本語コメントを使って自分の理解を整理するのもよい方法です。

コメントを使ったサンプルプログラム

次に、コメントを使って処理の意味を分かりやすくしたプログラムを見てみましょう。ここでは、2つの数値から差を求めて表示します。

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

#include <stdio.h>

int main(void) {
    // 基準となる点数を変数に保存する
    int target = 80;

    // 実際に取った点数を変数に保存する
    int score = 68;

    /*
        目標点との差を計算する。
        targetからscoreを引くことで、不足している点数を求める。
    */
    int difference = target - score;

    // 計算結果を画面に表示する
    printf("目標まであと%d点です。\n", difference);

    return 0;
}

実行結果

目標まであと12点です。

このプログラムでは、//による行コメントと、/* ... */によるブロックコメントを使っています。行コメントは短い説明に向いています。ブロックコメントは、複数行で少し詳しく説明したいときに使えます。

コメントを書くことで、targetが目標点、scoreが実際の点数、differenceが差を表していることが分かりやすくなります。変数名とコメントを組み合わせると、コード全体の意味を追いやすくなります。

演算と変数を組み合わせる考え方

C言語では、演算子と変数を組み合わせることで、さまざまな計算を表現できます。数値を直接書いて計算することもできますが、変数を使うと、値の意味が分かりやすくなり、あとから変更もしやすくなります。

書き方特徴
150 * 6計算はできるが、何を表す数値か分かりにくい
price * count単価と個数を掛けていることが分かりやすい
total = price * count計算結果を合計として保存できる
printf("%d", total)保存した結果を表示できる

変数を使うと、計算式そのものが説明に近くなります。price * countと書かれていれば、価格と個数を掛けていると読み取れます。

また、計算結果をtotalのような変数に入れておくと、あとから表示したり、別の計算に使ったりできます。プログラムでは、1つの計算だけで終わることは少なく、途中の結果を次の処理に渡す場面がよくあります。

int型で扱えるのは整数

今回のサンプルでは、int型を使っています。int型は整数を扱うための型です。整数とは、小数点を含まない数値のことです。

扱う値
int整数10、-3、0、150
double小数3.14、2.5、0.75

int型はC言語でよく使う基本的な型です。個数、点数、年齢、回数など、小数が不要な値を扱うときに向いています。

ただし、割り算で小数まで必要な場合はint型だけでは不十分です。整数同士の割り算では小数部分が切り捨てられるため、平均値や割合を正確に求めたい場合にはdouble型を使うことを考えます。

printf関数で変数の値を表示する

変数の値を画面に表示するときは、printf関数と書式指定子を使います。int型の整数を表示する場合は%dを使います。

表示したいもの書式指定子
int型の整数%d
計算結果の整数%d
複数の整数%dを複数使う

たとえば、printf("合計金額 = %d円\n", total);と書くと、%dの位置にtotalの値が入ります。

printf関数では、書式指定子の数と後ろに指定する値の数を合わせる必要があります。%dが2つある場合は、対応する整数値も2つ必要です。

よくあるミスと確認ポイント

算術演算と変数を学ぶときには、いくつかのよくあるミスがあります。最初のうちは、エラーが出ても落ち着いて確認することが大切です。

よくあるミス確認するポイント
掛け算に×を使うC言語では*を使う
割り算に÷を使うC言語では/を使う
セミコロンを忘れる変数宣言やprintf文の末尾を確認する
変数を宣言せずに使うintなどで先に宣言しているか確認する
変数名を間違える宣言した名前と使っている名前が一致しているか
%dと値の数が合わないprintfの書式指定子と引数の数を確認する
整数の割り算で小数が出ないint型同士の割り算になっていないか確認する

C言語は、記号の使い方に厳密です。数学で使う記号とC言語で使う記号が違うものもあるため、最初のうちは表を見ながら確認するとよいでしょう。

算術演算と変数を理解するとできることが増える

算術演算と変数は、C言語の土台になる考え方です。足し算や掛け算を直接書くだけでなく、変数を使って値に名前を付けることで、プログラムの意味が分かりやすくなります。

変数に値を保存し、その値を使って計算し、結果を別の変数に入れ、printf関数で表示する。この流れは、今後のC言語学習で何度も登場します。

学習内容できるようになること
算術演算子数値の計算をプログラムで表現できる
変数値や計算結果を名前付きで保存できる
代入計算結果を変数に入れられる
コメント処理の意図をプログラム内に残せる
printf関数変数や計算結果を画面に表示できる

C言語では、変数と演算を組み合わせることで、プログラムらしい処理が少しずつ作れるようになります。点数計算、料金計算、個数管理、平均値の計算など、身近な処理にも応用できます。

小さな計算からC言語の理解を広げる

C言語を学び始めた段階では、まず小さな計算を正確に書くことが大切です。演算子の意味、変数の宣言、値の代入、printf関数での表示、コメントの書き方を一つずつ確認していきましょう。

算術演算と変数は、条件分岐や繰り返し、関数、配列などの学習にもつながります。たとえば、条件分岐では変数の値を比較し、繰り返しでは変数の値を増やしながら処理を進めます。関数では、変数の値を渡して計算結果を受け取ることもあります。

そのため、今回の内容はC言語の基礎の中でもとても重要です。まずは、+、-、*、/、%の演算子に慣れ、int型の変数を使って計算結果を保存し、コメントで処理の意味を整理するところから始めていきましょう。