Next: , Up: C


9.4.1.1 C/C++演算子

演算子は、 特定の型の値に対して定義されなければなりません。 例えば、 +は数値に対しては定義されていますが、 構造体に対しては定義されていません。 演算子は、 型のグループに対して定義されることがよくあります。

C/C++に対しては、以下の定義が有効です。

以下の演算子がサポートされています。 これらは優先順位の低いものから順に並べられています。

,
カンマ、 あるいは、 順序付けの演算子です。 カンマによって区切られたリストの中の式は、 左から右の順で評価されます。 最後に評価された式の結果が、 式全体の評価結果になります。
=
代入。 代入された値が、 代入式の値になります。 スカラ型に対して定義されています。
op=
a opbという形式の式において使用され、 a = a op bに変換されます。 op==は、 同一の優先順位を持ちます。 opには、 |^&<<>>+-*/%の各演算子が使用できます。
?:
3項演算子です。 a ? b : cは、 aが真であればb、 偽であればcとみなすことができます。 aは整数型でなければなりません。
||
論理orです。 整数型に対して定義されています。
&&
論理andです。 整数型に対して定義されています。
|
ビットごとのorです。 整数型に対して定義されています。
^
ビットごとの排他的orです。 整数型に対して定義されています。
&
ビットごとのandです。 整数型に対して定義されています。
==!=
等価、 および、 不等価です。 スカラ型に対して定義されています。 これらの式の値は、 偽のときはゼロであり、 真のときはゼロ以外の値となります。
<><=>=
未満、 超過、 以下、 以上です。 スカラ型に対して定義されています。 これらの式の値は、 偽のときはゼロであり、 真のときはゼロ以外の値となります。
<<>>
左シフト、 右シフトです。 整数型に対して定義されています。
@
GDBの「人工配列」演算子です (see Expressions)。
+-
加算および減算です。 整数型、 浮動小数点型、 ポインタ型に対して定義されています。
*/%
乗算、 除算、 剰余です。 乗算と除算は、 整数型と浮動小数点型に対して定義されています。 剰余は、 整数型に対して定義されています。
++, --
インクリメント、 デクリメントです。 変数の前にある場合は、 式の中でその変数が使用される前に実行されます。 変数の後ろにある場合は、 変数の値が使用された後に実行されます。
*
ポインタの間接参照です。 ポインタ型に対して定義されています。 ++と同一の優先度を持ちます。
&
アドレス参照演算子です。変数に対して定義されています。 ++と同一の優先順位を持ちます。

C++のデバッグでは、 C++言語そのものにおいては許されていないような‘&’の使用法を、 GDBは実装しています。 C++の (‘&ref’により宣言される) 参照変数が格納されているアドレスを調べるのに、 ‘&(&ref)’ (あるいは、 もしそうしたいのであれば単に‘&&ref’) を使用することができます。

-
マイナス(負)です。 整数型と浮動小数点型に対して定義されています。 ++と同一の優先順位を持ちます。
!
論理notです。 整数型に対して定義されています。 ++と同一の優先順位を持ちます。
~
ビットごとのnot (補数) 演算子です。 整数型に対して定義されています。 ++と同一の優先順位を持ちます。
., ->
構造体のメンバ、 ポインタの指す構造体のメンバをそれぞれ指定する演算子です。 便宜上、 GDBは両者を同一のものとして扱い、 格納されている型情報をもとに、 ポインタによる間接参照の必要性を判断します。 構造体 (struct) および共用体 (union) に対して定義されています。
[]
配列のインデックスです。 a[i]は、 *(a+i)として定義されています。 ->と同一の優先順位を持ちます。
()
関数のパラメータ・リストです。 ->と同一の優先順位を持ちます。
::
C++のスコープ解決演算子です。 構造体(struct)、 共用体(union)、 クラス(class)に対して定義されています。
::
2重コロンはまた、 GDBのスコープ演算子 も 表わします (see Expressions)。 上記の::と同一の優先順位を持ちます。