C言語での代入演算子
こんにちは、未来のプログラマーたち!今日は、C言語での代入演算子の素晴らしい世界に飛び込んでいきます。まだ一度もコードを書いたことがないという方も心配しないでください。私がこの旅を一歩一歩导いてあげますから。このチュートリアルの最後には、プロのように値を代入できるようになるでしょう!
代入演算子とは?
飛び込む前に、代入演算子とは何か理解しましょう。数学の授業で使った等号(=)と思い出してください。でも、それを超えるスーパーパワーを持っているのです!これらは、プログラムの変数に値を代入するために使われます。しかし、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