C++の複合代入演算子の使い方を徹底解説
C++における複合代入演算子は、「e1 op= e2」という形式で指定されます。ここで e1 は const 型ではない変更可能な左辺値(l-value)であり、e2 は以下のいずれかである必要があります。
- 算術型(整数型や浮動小数点型など)
- ポインタ型(op が + または - の場合のみ)
「e1 op= e2」という記述は「e1 = e1 op e2」と同じ意味で動作しますが、大きな違いとしてe1 は一度しか評価されないという特徴があります。そのため、副作用を持つ式やコストの高い式を安全かつ効率的に扱えます。
C++の主な複合代入演算子一覧
| 演算子 | 説明 |
|---|---|
| *= | 第1オペランドの値に第2オペランドの値を掛け、結果を第1オペランドが示すオブジェクトに格納します。 |
| /= | 第1オペランドの値を第2オペランドの値で割り、結果を第1オペランドが示すオブジェクトに格納します。 |
| %= | 第1オペランドを第2オペランドの値で割った剰余(モジュロ)を求め、結果を第1オペランドが示すオブジェクトに格納します。 |
| += | 第1オペランドの値に第2オペランドの値を加え、結果を第1オペランドが示すオブジェクトに格納します。 |
| -= | 第1オペランドの値から第2オペランドの値を引き、結果を第1オペランドが示すオブジェクトに格納します。 |
| <<= | 第1オペランドの値を、第2オペランドの値で指定されたビット数だけ左にシフトし、結果を第1オペランドが示すオブジェクトに格納します。 |
| >>= | 第1オペランドの値を、第2オペランドの値で指定されたビット数だけ右にシフトし、結果を第1オペランドが示すオブジェクトに格納します。 |
| &= | 第1オペランドと第2オペランドのビットごとのAND(論理積)を求め、結果を第1オペランドが示すオブジェクトに格納します。 |
| ^= | 第1オペランドと第2オペランドのビットごとの排他的OR(XOR)を求め、結果を第1オペランドが示すオブジェクトに格納します。 |
| |= | 第1オペランドと第2オペランドのビットごとの包括的OR(論理和)を求め、結果を第1オペランドが示すオブジェクトに格納します。 |
複合代入演算子の使用例
それでは、代表的な複合代入演算子を使った具体的なコード例を見てみましょう。
#include<iostream>
using namespace std;
int main() {
int a = 3, b = 2;
a += b; // a = a + b
cout << a << endl;
a -= b; // a = a - b
cout << a << endl;
a *= b; // a = a * b
cout << a << endl;
a /= b; // a = a / b
cout << a << endl;
return 0;
}実行結果
このプログラムを実行すると、次の出力が得られます。
5 3 6 3
複合代入演算子を使用する際の注意点
複合代入演算子を使う際には、以下の点に注意が必要です。
- 列挙型への複合代入はエラーになる:列挙型(enum)に対して複合代入を行うと、コンパイルエラーが発生します。
- 左オペランドがポインタ型の場合:右オペランドはポインタ型であるか、または 0 と評価される定数式でなければなりません。
- 左オペランドが整数型の場合:右オペランドはポインタ型であってはなりません。
これらのルールを理解しておくことで、複合代入演算子を安全かつ効果的に活用でき、コードをより簡潔で読みやすいものにできます。
-
C#の複合代入演算子とは?種類と使い方をわかりやすく解説
複合代入演算子(Compound Assignment Operator)は、演算結果を変数に代入するまでの処理を、より短い構文で記述できる演算子です。まず2つのオペランドに対して演算が行われ、その結果が最初のオペランドに代入されます。たとえば val += 3 は val = val + 3 と同じ意味になり、コードが簡潔で読みやすくなるのが特徴です。C#では以下のような複合代入演算子が用意されています。C#の複合代入演算子一覧No.演算子と名称1+=加算代入(Addition Assignment)2-=減算代入(Subtraction Assignment)3*=乗算代入(Multipl
-
Pythonの代入演算子とは?種類と使い方を一覧表でわかりやすく解説
Pythonには、変数に値を格納するための代入演算子が複数用意されています。基本となる「=」のほかに、算術演算と代入を一度に行える複合代入演算子があり、これらを使いこなすことでコードをより簡潔に記述できます。 Pythonの代入演算子一覧 以下の表は、Pythonで使用できるすべての代入演算子をまとめたものです。 演算子 説明 使用例 = 右側の値を左側の変数に代入します。 c = a + b … a + b の計算結果を c に代入 += 左辺に右辺を加算し、その結果を左辺に代入します。 c += a … c に a を加算(c = c + a と同じ) -= 左辺から右辺を