C++
 Computer >> コンピューター >  >> プログラミング >> C++

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 と評価される定数式でなければなりません。
  • 左オペランドが整数型の場合:右オペランドはポインタ型であってはなりません。

これらのルールを理解しておくことで、複合代入演算子を安全かつ効果的に活用でき、コードをより簡潔で読みやすいものにできます。

  1. C#の複合代入演算子とは?種類と使い方をわかりやすく解説

    複合代入演算子(Compound Assignment Operator)は、演算結果を変数に代入するまでの処理を、より短い構文で記述できる演算子です。まず2つのオペランドに対して演算が行われ、その結果が最初のオペランドに代入されます。たとえば val += 3 は val = val + 3 と同じ意味になり、コードが簡潔で読みやすくなるのが特徴です。C#では以下のような複合代入演算子が用意されています。C#の複合代入演算子一覧No.演算子と名称1+=加算代入(Addition Assignment)2-=減算代入(Subtraction Assignment)3*=乗算代入(Multipl

  2. Pythonの代入演算子とは?種類と使い方を一覧表でわかりやすく解説

    Pythonには、変数に値を格納するための代入演算子が複数用意されています。基本となる「=」のほかに、算術演算と代入を一度に行える複合代入演算子があり、これらを使いこなすことでコードをより簡潔に記述できます。 Pythonの代入演算子一覧 以下の表は、Pythonで使用できるすべての代入演算子をまとめたものです。 演算子 説明 使用例 = 右側の値を左側の変数に代入します。 c = a + b … a + b の計算結果を c に代入 += 左辺に右辺を加算し、その結果を左辺に代入します。 c += a … c に a を加算(c = c + a と同じ) -= 左辺から右辺を