C言語での代入演算子

こんにちは、未来のプログラマーたち!今日は、C言語での代入演算子の素晴らしい世界に飛び込んでいきます。まだ一度もコードを書いたことがないという方も心配しないでください。私がこの旅を一歩一歩导いてあげますから。このチュートリアルの最後には、プロのように値を代入できるようになるでしょう!

C - Assignment Operators

代入演算子とは?

飛び込む前に、代入演算子とは何か理解しましょう。数学の授業で使った等号(=)と思い出してください。でも、それを超えるスーパーパワーを持っているのです!これらは、プログラムの変数に値を代入するために使われます。しかし、C言語では単なる代入以上のことができます。

単純な代入演算子 (=)

まずは基本的なことから——単純な代入演算子です。これは、C言語でのすべての代入操作の基盤です。

効果

単純な代入演算子は等号(=)で表されます。右辺の値を左辺の変数に代入します。

以下は簡単な例です:

int age;
age = 25;

このコードでは、ageという整数型の変数を宣言し、その後で値25を代入しています。それだけのことです!

複数の代入

代入を連結することもできます。以下の例を見てみましょう:

int x, y, z;
x = y = z = 10;

このコードは、値10をx、y、zの3つの変数に代入しています。右から左に動作するので、まずzに10が代入され、次にyにzの値(10)が代入され、最後にxにyの値(もう10)が代入されます。

変数の初期化

代入演算子を変数を宣言する際にも使うことができます:

int height = 180; // 1行で宣言と初期化
float pi = 3.14159;
char grade = 'A';

これは、変数を作成したときにその初期値を設定するのに最適な方法です。

増分代入演算子

では、レベルを上げましょう!増分代入演算子はショートカットのようなものです。演算と代入を一つのステップで行います。それぞれを見ていきましょう:

加算代入 (+=)

+=演算子は、右辺のオペランドを左辺のオペランドに加えて、その結果を左辺のオペランドに代入します。

int score = 10;
score += 5; // score = score + 5; と等価
printf("Score: %d\n", score); // 出力: Score: 15

減算代入 (-=)

-=演算子は、右辺のオペランドを左辺のオペランドから引いて、その結果を左辺のオペランドに代入します。

int lives = 3;
lives -= 1; // lives = lives - 1; と等価
printf("Lives remaining: %d\n", lives); // 出力: Lives remaining: 2

乗算代入 (*=)

*=演算子は、左辺のオペランドを右辺のオペランドで掛けて、その結果を左辺のオペランドに代入します。

int power = 2;
power *= 3; // power = power * 3; と等価
printf("Power level: %d\n", power); // 出力: Power level: 6

除算代入 (/=)

/=演算子は、左辺のオペランドを右辺のオペランドで割って、その結果を左辺のオペランドに代入します。

float money = 100.0;
money /= 2; // money = money / 2; と等価
printf("Money left: %.2f\n", money); // 出力: Money left: 50.00

余り代入 (%=)

%=演算子は、左辺のオペランドを右辺のオペランドで割った余りを計算して、その結果を左辺のオペランドに代入します。

int cookies = 10;
cookies %= 3; // cookies = cookies % 3; と等価
printf("Leftover cookies: %d\n", cookies); // 出力: Leftover cookies: 1

ビットごとのAND代入 (&=)

&=演算子は、ビットごとのAND演算を行い、その結果を左辺のオペランドに代入します。

int a = 5; // バイナリ: 0101
a &= 3;    // バイナリ: 0011
printf("Result: %d\n", a); // 出力: Result: 1

ビットごとのOR代入 (|=)

|=演算子は、ビットごとのOR演算を行い、その結果を左辺のオペランドに代入します。

int b = 5; // バイナリ: 0101
b |= 3;    // バイナリ: 0011
printf("Result: %d\n", b); // 出力: Result: 7

ビットごとのXOR代入 (^=)

^=演算子は、ビットごとのXOR演算を行い、その結果を左辺のオペランドに代入します。

int c = 5; // バイナリ: 0101
c ^= 3;    // バイナリ: 0011
printf("Result: %d\n", c); // 出力: Result: 6

左シフト代入 (<<=)

<<=演算子は、左シフト演算を行い、その結果を左辺のオペランドに代入します。

int d = 5; // バイナリ: 0101
d <<= 1;   // 左に1シフト
printf("Result: %d\n", d); // 出力: Result: 10

右シフト代入 (>>=)

>>=演算子は、右シフト演算を行い、その結果を左辺のオペランドに代入します。

int e = 8; // バイナリ: 1000
e >>= 1;   // 右に1シフト
printf("Result: %d\n", e); // 出力: Result: 4

代入演算子のまとめ表

以下は、私たちがカバーしたすべての代入演算子の便利な表です:

演算子 説明 等価
= 単純な代入 x = 5; x = 5;
+= 加算代入 x += 3; x = x + 3;
-= 減算代入 x -= 3; x = x - 3;
*= 乗算代入 x *= 3; x = x * 3;
/= 除算代入 x /= 3; x = x / 3;
%= 余り代入 x %= 3; x = x % 3;
&= ビットごとのAND代入 x &= 3; x = x & 3;
|= ビットごとのOR代入 x |= 3; x = x | 3;
^= ビットごとのXOR代入 x ^= 3; x = x ^ 3;
<<= 左シフト代入 x <<= 2; x = x << 2;
>>= 右シフト代入 x >>= 2; x = x >> 2;

それでお終いです!C言語での代入演算子のグランドツアーが終わりました。覚えるためには実践が必要です。これらの演算子を使ってコードを書いてみて、すぐにでも自然に使えるようになります。

お楽しみのCプログラマーになるためのコーディング、がんばって!

Credits: Image by storyset