C++ の組み込み演算子、優先順位、および結合規則C++ built-in operators, precedence, and associativity

C++ 言語には、C のすべての演算子が含まれており、いくつかの新しい演算子が追加されています。The C++ language includes all C operators and adds several new operators. 演算子により、1 つまたは複数のオペランドに対して実行される評価が決まります。Operators specify an evaluation to be performed on one or more operands.

優先順位と結合規則Precedence and associativity

演算子の優先順位では、複数の演算子を含む式での演算の順序を指定します。Operator precedence specifies the order of operations in expressions that contain more than one operator. 演算子の結合規則では、同じ優先順位を持つ複数の演算子を含む式で、オペランドが左側または右側の演算子でグループ化されているかどうかを指定します。Operator associativity specifies whether, in an expression that contains multiple operators with the same precedence, an operand is grouped with the one on its left or the one on its right.

その他のスペルAlternative spellings

C++ では、一部の演算子に対して別のスペルを指定します。C++ specifies alternative spellings for some operators. C では、代替のスペルはマクロとしてヘッダーに記載されてい <iso646.h> ます。In C, the alternative spellings are provided as macros in the <iso646.h> header. C++ では、これらの代替手段はキーワードであり、またはの使用は非推奨とされ <iso646.h> <ciso646> ます。In C++, these alternatives are keywords, and use of <iso646.h> or the C++ equivalent <ciso646> is deprecated. Microsoft C++ では、 /permissive- またはコンパイラオプションを使用して、 /Za 代替のスペルを有効にする必要があります。In Microsoft C++, the /permissive- or /Za compiler option is required to enable the alternative spellings.

C++ 演算子の優先順位と結合規則の表C++ operator precedence and associativity table

次の表では、C++ の演算子の優先順位と結合規則を示しています (演算子は優先順位の高いものから低いものの順に並んでいます)。The following table shows the precedence and associativity of C++ operators (from highest to lowest precedence). 優先順位番号が同じ演算子は、別の関係がかっこで明示的に適用されない限り、同じ優先順位になります。Operators with the same precedence number have equal precedence unless another relationship is explicitly forced by parentheses.

演算子の説明Operator Description 演算子Operator 代替手段Alternative
グループ1の優先順位、結合規則なしGroup 1 precedence, no associativity
スコープの解決Scope resolution ::
グループ2の優先順位、左から右への結合規則Group 2 precedence, left to right associativity
メンバー選択 (オブジェクトまたはポインター)Member selection (object or pointer) .もしくは->. or ->
配列インデックスArray subscript []
関数呼び出しFunction call ()
後置インクリメントPostfix increment ++
後置デクリメントPostfix decrement --
型名Type name typeid
const 型変換Constant type conversion const_cast
動的型変換Dynamic type conversion dynamic_cast
再解釈型変換Reinterpreted type conversion reinterpret_cast
静的型変換Static type conversion static_cast
グループ3の優先順位、右から左の結合規則Group 3 precedence, right to left associativity
オブジェクトまたは型のサイズSize of object or type sizeof
前置インクリメントPrefix increment ++
前置デクリメントPrefix decrement --
1の補数One's complement ~ compl
論理 notLogical not ! not
単項否定Unary negation -
単項プラスUnary plus +
アドレス--Address-of &
間接Indirection *
オブジェクトの作成Create object new
オブジェクトの破棄Destroy object delete
詠唱Cast ()
グループ4の優先順位、左から右への結合規則Group 4 precedence, left to right associativity
メンバーへのポインター (オブジェクトまたはポインター)Pointer-to-member (objects or pointers) .*もしくは->*.* or ->*
グループ5の優先順位、左から右への結合規則Group 5 precedence, left to right associativity
乗算Multiplication *
事業部Division /
ModulusModulus %
グループ6の優先順位、左から右の結合規則Group 6 precedence, left to right associativity
加算Addition +
減算Subtraction -
グループ7の優先順位、左から右への結合規則Group 7 precedence, left to right associativity
左シフトLeft shift <<
右シフトRight shift >>
グループ8の優先順位、左から右への結合規則Group 8 precedence, left to right associativity
より小さいLess than <
より大きいGreater than >
以下Less than or equal to <=
以上Greater than or equal to >=
グループ9の優先順位、左から右への結合規則Group 9 precedence, left to right associativity
等式Equality ==
等しくInequality != not_eq
グループ10の優先順位が左から右の結合規則Group 10 precedence left to right associativity
ビット演算子 ANDBitwise AND & bitand
グループ11の優先順位、左から右への結合規則Group 11 precedence, left to right associativity
ビット演算子排他的 ORBitwise exclusive OR ^ xor
グループ12の優先順位、左から右への結合規則Group 12 precedence, left to right associativity
ビット演算子包含的 ORBitwise inclusive OR | bitor
グループ13の優先順位、左から右への結合規則Group 13 precedence, left to right associativity
論理積Logical AND && and
グループ14の優先順位、左から右への結合規則Group 14 precedence, left to right associativity
論理和Logical OR || or
グループ15の優先順位、右から左の結合規則Group 15 precedence, right to left associativity
条件付きConditional ? :
グループ16の優先順位、右から左の結合規則Group 16 precedence, right to left associativity
割り当てAssignment =
乗算代入Multiplication assignment *=
除算代入Division assignment /=
剰余代入Modulus assignment %=
加算代入Addition assignment +=
減算代入Subtraction assignment -=
左シフト代入Left-shift assignment <<=
右シフト代入Right-shift assignment >>=
ビットごとの AND 代入Bitwise AND assignment &= and_eq
ビットごとの包括的 OR 代入Bitwise inclusive OR assignment |= or_eq
ビットごとの排他的 OR 代入Bitwise exclusive OR assignment ^= xor_eq
グループ17の優先順位、右から左の結合規則Group 17 precedence, right to left associativity
throw 式throw expression throw
グループ18の優先順位、左から右への結合規則Group 18 precedence, left to right associativity
傍点Comma ,,

関連項目See also

演算子のオーバーロードOperator overloading