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 | , |