C言語の代入演算子と複合代入演算子を解説!初心者でもわかる計算の書き方
生徒
「C言語って、計算した結果を変数に入れるときはどうやって書くんですか?ただ計算するだけじゃなくて、数字を変数に保存したいです。」
先生
「そのときに使うのが代入演算子です。代入演算子とは、計算した結果や数字を変数に入れるための記号です。」
生徒
「代入演算子ってイコールのことですか?」
先生
「その通りです。イコールを使って変数に値を入れることができます。さらにプログラムでは、複合代入演算子という便利な書き方もあります。」
1. 代入演算子とは
C言語の代入演算子とは、変数に数字や計算結果を入れるための記号です。数学のイコールは左右が同じという意味ですが、プログラミングのイコールは「右の値を左の変数に入れる」という意味になります。たとえば点数やお金、体力などを変数という名前付きの箱に保存し、あとで使うことができます。
実際の書き方はとても簡単です。数字や計算結果をそのまま入れられます。
#include <stdio.h>
int main(void){
int score;
score = 50;
printf("%d\n", score);
return 0;
}
50
変数の中身は好きなタイミングで変えられます。これが代入演算子の基本です。
2. 計算結果を代入しよう
代入演算子は計算結果を保存することもできます。例えば合計や残り時間などを計算し、それを変数に入れて使います。
#include <stdio.h>
int main(void){
int a = 5 + 3;
printf("%d\n", a);
return 0;
}
8
右側で計算して、その結果を左に入れる流れです。この仕組みがあるからこそ、数字をもとにしたプログラムが作れるようになります。
3. 複合代入演算子とは何か
複合代入演算子という言葉は聞き慣れないですが、とても便利な書き方です。複合という言葉は「くみあわせ」という意味で、計算と代入を同時に行える仕組みです。
普通の書き方だと次のようになります。
a = a + 3;
左側の変数を使って計算し、その結果をまた同じ変数に入れています。このような書き方はよく使われますが、少し長くなります。そこで登場するのが複合代入演算子です。
a += 3;
たったこれだけで同じ意味になります。短く書けて読みやすくなるため、多くのプログラムで使われています。
4. 足し算の複合代入(+=)
+=は、変数に好きな数を足していく書き方です。スコアを追加したり、お金を増やしたり、時間を進めたりするときに役立ちます。
#include <stdio.h>
int main(void){
int score = 50;
score += 20;
printf("%d\n", score);
return 0;
}
70
このように増えていく値を簡単に管理できます。
5. 引き算の複合代入(-=)
-=は、変数から数字を引くときに使います。ゲームで体力が減る場面や、残り時間が減る処理でよく使われます。
#include <stdio.h>
int main(void){
int hp = 100;
hp -= 30;
printf("%d\n", hp);
return 0;
}
70
hpという変数の中身が三十減り、七十になります。繰り返し使うような場面でも書きやすくなります。
6. 掛け算の複合代入(*=)
*=は、変数に掛け算した結果を入れます。ポイントは、一つの変数をそのまま使って計算するので、書き方がすっきりするということです。
#include <stdio.h>
int main(void){
int price = 120;
price *= 2;
printf("%d\n", price);
return 0;
}
240
例えば二倍の値段や、ポイントを二倍にするといった処理が簡単に書けます。
7. 割り算の複合代入(/=)
/=は、変数の中身を割り算して値を更新します。商品の割引率を計算したり、数字を調整したりするときに使えます。
#include <stdio.h>
int main(void){
int money = 1000;
money /= 2;
printf("%d\n", money);
return 0;
}
500
このようにして変数の値を半分にできます。同じ処理を繰り返す場合でも短く書けるので、とても便利です。
8. 代入演算子と複合代入演算子が役立つ場面
代入演算子と複合代入演算子は、たくさんのプログラムで使われます。ゲームのスコア、残り時間、体力やパワーなど、数字が変化する場面でとても役立ちます。増える、減る、倍になる、半分になるといった動きを簡単に表現できます。
コードを書く量が減るという点も大きな利点です。プログラムに無駄が少なくなり、読みやすく理解しやすいコードになります。将来の自分や他の人が読んだときにも意味がわかりやすくなります。
たとえば敵を倒したときにスコアを足す、アイテムを使って体力を回復する、経験値を増やすといった動きに使えます。さらに、センサーの値を集計したり、平均を出したり、回数を数えたりするときにも便利です。