C言語における計算のやり方と注意点とは…?
変数で計算をするには、どのようなコードを書けばいいの…?
ついに変数と数値の入力方法をマスターしましたね!
そしたら、次は計算です!
基本的な計算をマスターすれば、いろいろな機能を持ったプログラムを作ることができるようになります。
本記事では、変数を使った基本的な計算方法をご紹介しておりますので、ぜひ一緒に学んでいきましょう。
気になるところへGO!
最初に変数の代入をマスターしよう!

変数の計算で最初に覚える必要があるのは、変数に数値を代入する方法になります。
理由はとっても単純で、変数に代入できないと計算結果を保存できないからです。
C言語で変数に数値を代入するには、次のようなコードを書けばOKです。
変数 = 数値;
『i=10;』のように書けば、変数iに10を代入することができます。
なお、このコードからも読み取れるようにC言語の『=』は代入を意味しています。
算数と違って『等しい』という意味はありませんので、ご注意ください。
C言語で『等しい』という意味を表す記号は『==』になります。
こちらは条件分岐のときにご紹介いたしますので、今は覚えなくても大丈夫ですよ。
代入の次は整数の四則演算!

変数に代入できるようになったら次は整数の四則演算です!
四則演算に使用する記号は次の5つになります。

C言語特有のルールがありそうな気がしますが、基本的な計算のルールは算数と同じです。
その事実を確認するために、さっそく次のプログラムをコピペして実行してみましょう。
#include <stdio.h>
int main(void) {
int i = 5;
printf("①i+2=%d\n", i + 2); //足し算
printf("②i-2=%d\n", i - 2); //引き算
printf("③i*2=%d\n", i * 2); //掛け算
printf("④i/2=%d\n", i / 2); //割り算(商)
printf("⑤i%%2=%d\n", i % 2); //割り算(余)
printf("⑥i-2*3=%d\n", i - 2 * 3); //混合(掛け算優先)
printf("⑦(i+5)/2=%d\n", (i + 5) / 2); //混合(カッコ優先)
return 0;
}
①i+2=7
②i-2=3
③i*2=10
④i/2=2
⑤i%2=1
⑥i-2*3=-1
⑦(i+5)/2=5
では、プログラムの確認をしていきましょう。
まず、①②の足し算・引き算に関してですが、これらは算数のルールと全く一緒です。
掛け算もルールは一緒なのですが、③のように記号はアスタリスク『*』を使ってください。
割り算は④⑤のように『/』を使うと商を、『%』を使うと余りを算出することができますよ。
なお、⑥のように『掛け算・割り算』が『足し算・引き算』より先に計算される点や、カッコの中が優先的に計算されるのも算数のルールと同じです。
あんまり馴染みのない『余り』を求める⑤の計算ですが、実はかなりよく使います。
余りを求める計算を使えば、倍数を判別することができるからです。
例えば『i%2』の計算結果が0になった場合、変数iに保存されている数値は2の倍数を意味する偶数であることが分かります。
このような使い方をすると、倍数に応じて動作を変えられるプログラムを作ることができるんです。
小数(実数)の四則演算

では、さっそく実数(小数)の計算ルールが整数の計算ルールと同じか、次のプログラムを実行して確認してみましょう。
なお、実数を表示する際は変換指定子を『%d』ではなく『%f』と書く必要がありますのでご注意ください。
#include<stdio.h>
int main(void) {
double i = 5;
printf("①i+1.5=%f\n", i + 1.5);
printf("②i-2.5=%f\n", i - 2.5);
printf("③i*1.5=%f\n", i * 1.5);
printf("④i/2=%f\n", i / 2);
return 0;
}
①i+1.5=6.500000
②i-2.5=2.500000
③i*1.5=7.500000
④i/2=2.500000
実行結果を見ると小数の四則演算も整数と同じルールが適用されていることがわかります。
プログラムには書いていませんが、計算の優先順位やカッコの効果も同様です。
整数の計算と少し違うのは割り算の商をが小数になるくらいなので、実数の計算は整数とほとんど同じという認識でいいと思います。
ちょっと便利な『複合代入演算子』

先ほどご紹介した四則演算の記号は『=』と組み合わせることができます。
試しに、次のプログラムを実行してみてください。
#include <stdio.h>
int main(void) {
int i = 3;
i += 2;
printf("%d\n", i);
return 0;
}
このプログラムを実行すると『5』が表示されると思います。
『+=』という記号を使うと、右側の値を変数に加えることができるのです。
具体的には、変数iに保存されていた3に右辺の2を加えて、iにもう一回代入しています。
つまり、『i=i+2』と同じことをしているのです。
このように、四則演算記号と『=』を組み合わせた演算子を複合代入演算子と言います。
左辺の変数と右辺の数値の計算結果を、左辺の変数に保存することができるので、スッキリしたコードを書けるようになるのです。
回数を数えるインクリメント演算子とデクリメント演算子

最後にご紹介するのはインクリメント演算子とデクリメント演算子です。
インクリメント演算子は『++』、デクリメント演算子は『––』という記号になります。
説明の前に、さっそく次のプログラムを実行してみましょう。
#include<stdio.h>
int main(void) {
int i = 3;
int j = 3;
i++;
j--;
printf("i=%d,j=%d\n", i, j);
return 0;
}
先ほどのプログラムを実行すると『i=4、j=2』が表示されると思います。
iが1増えて、jが1減っているのが分かりますよね。
そうです…
インクリメント演算子は『+1する』、デクリメント演算子は『-1する』という意味なんです。
お察しの通り、インクリメント演算子とデクリメント演算子は『+1』や『-1』で置き換えることができます。
でも、この演算子を使えば『コードの意図』を表現できるようになるんです。
ここでは例として『i++』で考えてみましょう。
このインクリメント演算子の意味は『iを1増やす』という意味でしたよね?
しかも、iにどのような値が代入されていても、『+1』することになります。
『今の数値に関係なく+1する作業』って何か心当たりがありませんか?
インクリメント演算子やデクリメント演算子を使うと、コードの読み手に『数を数えている』ことを伝えることができます。
チームでプログラムを開発する場合、人が書いたコードを読むことが必ずあるはずです。
その際に『++』『–』を使っていれば、計算ではなく回数を数えていることを、コメントがなくても読み手に伝えることができるのです。
インクリメント演算子とデクリメント演算子の注意点

インクリメント演算子とデクリメント演算子は数を数えていることを伝えるのに役立ちますが、ひとつだけ注意点があります。
それは、『++』と『–』は書く位置によって意味が変わることです。
次のプログラムを実行したらどのような結果になると思いますか?
#include<stdio.h>
int main(void) {
int i = 3;
printf("①i=%d\n", ++i);
printf("②i=%d\n", i++);
return 0;
先ほどのプログラムを実行すると、①i=4と②i=4が表示されます。
まず①に関してですが、①の『++i』のようにインクリメント演算子が変数より前に来るものを前置と言います。
前置の場合、iに1を足してからその行のコードが実行されるので、3に1を足した4が表示されるのです。
一方、②のように変数のあとに『++』を書くことを後置と言います。
後置の場合、i++の行のコードが実行されたあとに+1されるんです。
そのため、数値を表示するときは4のままであり、表示が終わった後にiが5に変わっているのです。
このように、インクリメント演算子やデクリメント演算子は書く位置によって、動作が変わることを覚えておきましょう。
まとめ
以上がC言語における数値計算のルールになります。
ほとんど算数と同じなので、理解しやすかったのではないでしょうか?
これらの計算を早く身に付けられれば、いろいろなプログラムを作れるようになります。
ぜひ、マスターしていきましょう。
