C言語の基本

【意外と簡単】C言語の変数に代入して計算をしてみよう!

トビタカ
トビタカ
本記事では、変数を使ったC言語の計算方法をご紹介しています。

C言語における計算のやり方と注意点とは…?

 

変数で計算をするには、どのようなコードを書けばいいの…?

 

ついに変数と数値の入力方法をマスターしましたね!

そしたら、次は計算です!

基本的な計算をマスターすれば、いろいろな機能を持ったプログラムを作ることができるようになります。

本記事では、変数を使った基本的な計算方法をご紹介しておりますので、ぜひ一緒に学んでいきましょう。

トビタカ
トビタカ
プログラムは簡単な計算の組み合わせなので、ぜひマスターしていきましょう!
とび助
とび助
わかりました!

最初に変数の代入をマスターしよう!

変数の計算で最初に覚える必要があるのは、変数に数値を代入する方法になります。

理由はとっても単純で、変数に代入できないと計算結果を保存できないからです。

 

C言語で変数に数値を代入するには、次のようなコードを書けばOKです。

変数に代入するコード

変数 = 数値;

 

『i=10;』のように書けば、変数iに10を代入することができます。

なお、このコードからも読み取れるようにC言語の『=』は代入を意味しています。

算数と違って『等しい』という意味はありませんので、ご注意ください。

C言語で『等しい』という意味を表す記号は『==』になります。

こちらは条件分岐のときにご紹介いたしますので、今は覚えなくても大丈夫ですよ。

トビタカ
トビタカ
ちなみに、代入するコードの先頭に型式を書けば『変数の初期化』になりますよ!
とび助
とび助
初期化も代入の一種だったんですね!

代入の次は整数の四則演算!

変数に代入できるようになったら次は整数の四則演算です!

四則演算に使用する記号は次の5つになります。

C言語の四則演算記号

 

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
とび助
とび助
同じ結果になりました!

 

では、プログラムの確認をしていきましょう。

まず、①②の足し算・引き算に関してですが、これらは算数のルールと全く一緒です。

掛け算もルールは一緒なのですが、③のように記号はアスタリスク『*』を使ってください。

割り算は④⑤のように『/』を使うと商を、『%』を使うと余りを算出することができますよ。

なお、⑥のように『掛け算・割り算』が『足し算・引き算』より先に計算される点や、カッコの中が優先的に計算されるのも算数のルールと同じです。

とび助
とび助
『=』以外は算数と同じなんですね~
トビタカ
トビタカ
そういう認識でOKですよ!

あんまり馴染みのない『余り』を求める⑤の計算ですが、実はかなりよく使います。

余りを求める計算を使えば、倍数を判別することができるからです。

例えば『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=4、j=2』が表示されると思います。

iが1増えて、jが1減っているのが分かりますよね。

そうです…

インクリメント演算子は『+1する』、デクリメント演算子は『-1する』という意味なんです。

とび助
とび助
1を足すなら『i+=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;  

 

とび助
とび助
1ずつ足していくんだから、①は4で②は5になると思います!
トビタカ
トビタカ
残念!実は両方とも4なんです!

 

先ほどのプログラムを実行すると、①i=4と②i=4が表示されます。

まず①に関してですが、①の『++i』のようにインクリメント演算子が変数より前に来るものを前置と言います。

前置の場合、iに1を足してからその行のコードが実行されるので、3に1を足した4が表示されるのです。

 

一方、②のように変数のあとに『++』を書くことを後置と言います。

後置の場合、i++の行のコードが実行されたあとに+1されるんです。

そのため、数値を表示するときは4のままであり、表示が終わった後にiが5に変わっているのです。

このように、インクリメント演算子やデクリメント演算子は書く位置によって、動作が変わることを覚えておきましょう。

とび助
とび助
便利ですが、気を付けないとちょっと危険ですね…
トビタカ
トビタカ
心配でしたら『i++;』だけのコードを書けば、想定外の動作を防ぐことができますよ!
とび助
とび助
なるほど~

まとめ

以上がC言語における数値計算のルールになります。

ほとんど算数と同じなので、理解しやすかったのではないでしょうか?

これらの計算を早く身に付けられれば、いろいろなプログラムを作れるようになります。

ぜひ、マスターしていきましょう。

計算方法のまとめ
とび助
とび助
さっそく計算するプログラムを書いてみるぞ!
トビタカ
トビタカ
頑張ってください!

 

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA