C++ の組み込み演算子、優先順位、結合規則

C++ 言語には、C のすべての演算子が含まれており、いくつかの新しい演算子が追加されています。 演算子により、1 つまたは複数のオペランドに対して実行される評価が決まります。

優先順位と結合規則

演算子の優先順位により、複数の演算子を含む式で、どの演算子から先に演算を行うかが決まります。 演算子の結合規則により、優先順位が同じ複数の演算子を含む式で、オペランドを左右どちらの演算子にグループ化するかが決まります。

代替スペル

C++ では、一部の演算子に代替スペルを指定します。 C では、<iso646.h> ヘッダーにマクロとして代替スペルが指定されています。 C++ では、これらの代替スペルはキーワードであり、<iso646.h> や C++ でそれに相当する <ciso646> の使用は非推奨です。 Microsoft C++ では、/permissive- または /Za コンパイラ オプションを使用して、代替スペルを有効にする必要があります。

C++ 演算子の優先順位と結合規則のテーブル

次の表では、C++ の演算子の優先順位と結合規則を示しています (演算子は優先順位の高いものから低いものの順に並んでいます)。 優先順位番号が同じ演算子は、別の関係がかっこで明示的に適用されない限り、同じ優先順位になります。

演算子の説明 Operator 代替手段
グループ 1 の優先順位、結合規則なし
スコープ解決 ::
グループ 2 の優先順位、左から右の結合規則
メンバーの選択 (オブジェクトまたはポインター) . または ->
配列の下付き文字 []
関数呼び出し ()
後置インクリメント ++
後置デクリメント --
型名 typeid
定数型変換 const_cast
動的型変換 dynamic_cast
再解釈された型変換 reinterpret_cast
静的型変換 static_cast
グループ 3 の優先順位、右から左の結合規則
オブジェクトまたは型のサイズ sizeof
プレフィックスの増分 ++
プレフィックスのデクリメント --
1 の補数 ~ compl
論理 NOT ! not
単項マイナス符号 -
単項プラス +
アドレス取得 &
間接 *
オブジェクトの作成 new
オブジェクトを破棄する delete
キャスト ()
グループ 4 の優先順位、左から右の結合規則
メンバーへのポインター (オブジェクトまたはポインター) .* または ->*
グループ 5 の優先順位、左から右の結合規則
乗算 *
除算 /
係数 %
グループ 6 の優先順位、左から右の結合規則
加算 +
減算 -
グループ 7 の優先順位、左から右の結合規則
左シフト <<
右シフト >>
グループ 8 の優先順位、左から右の結合規則
より小さい <
より大きい >
次の値以下 <=
次の値以上 >=
グループ 9 の優先順位、左から右の結合規則
等式 ==
非等価 != not_eq
グループ 10 の優先順位、左から右の結合規則
ビットごとの AND & bitand
グループ 11 の優先順位、左から右の結合規則
ビットごとの排他的 OR ^ xor
グループ 12 の優先順位、左から右の結合規則
ビットごとの包括 OR | bitor
グループ 13 の優先順位、左から右の結合規則
論理積 && and
グループ 14 の優先順位、左から右の結合規則
論理和 || or
グループ 15 の優先順位、右から左の結合規則
条件 ? :
譲渡 =
乗算の割り当て *=
除算の割り当て /=
剰余代入 %=
追加の割り当て +=
減算の割り当て -=
左シフト割り当て <<=
右シフト割り当て >>=
ビットごとの AND 代入 &= and_eq
ビットごとの包括 OR 代入 |= or_eq
ビットごとの排他的 OR 代入 ^= xor_eq
throw 式 throw
グループ 16 の優先順位、左から右の結合規則
Comma ,

関連項目

演算子のオーバーロード