次の表に、ユーザ言語のすべての演算子を優先順位順に示します。単項の優先順位が最も高く、カンマが最も低くなります。
| 単項 | ! ~ + - ++ -- |
| 乗算 | * / % |
| アディティブ | + - |
| [Shift] | << >> |
| リレーショナル | < <= > >= |
| 等しい | == != |
| ビット論理積 | & |
| ビット排他論理和 | ^ |
| ビット論理和 | ` |
| 論理積 | && |
| 論理和 | ` |
| 条件つき | ?: |
| Assignment | = *= /= %= += -= &= ^= |
| カンマ | , |
単項、条件、および割り当てを除くすべての演算子の結合性は左から右です。単項、条件、および割り当ての結合性は右から左です。
通常の演算子の優先順位は、括弧を使用して変更することができます。
ビット演算子は、データ タイプ char と int でのみ使用できます。
単項:
| ~ | ビット単位の(1 の)補数 |
二項:
| << | 左シフト |
| >> | 右シフト |
| & | ビット論理積 |
| ^ | ビット排他論理和 |
| ` | ` |
割り当て:
| &= | ビット論理積を割り当て |
| ^= | ビット排他論理和を割り当て |
| ` | =` |
| <<= | 左シフト割り当て |
| >>= | 右シフト割り当て |
論理演算子は、任意のデータ タイプの式で使用できます。
単項:
| ! | 論理否定 |
二項:
| && | 論理積 |
| ` |
文字列式と論理演算子を使用して、文字列が空であるかどうかをチェックします。
オブジェクト タイプと論理演算子を使用して、オブジェクトに有効なデータが含まれているかどうかをチェックします。
比較演算子は、オブジェクト タイプを除くすべてのデータ タイプの式で使用できます。
| < | 小さい |
| <= | 以下 |
| > | 大きい |
| >= | 以上 |
| == | 等しい |
| != | 等しくない |
評価演算子は、条件に基づいて式を評価したり、一連の式をグループ化して 1 つの式として評価するために使用します。
| ?: | 条件つき |
| , | カンマ |
条件演算子は、次のように、式内で決定を行うために使用されます。
int a;
// ...code that calculates 'a'
string s = a ? "True" : "False";
これは、基本的に次のコードと同じです。
int a;
string s;
// ...code that calculates 'a'
if (a)
s = "True";
else
s = "False";
ただし、条件演算子の利点は、式内で使用できることです。
カンマ演算子は、右オペランドのタイプと値を結果として使用して、一連の式を左から右に評価するために使用されます。
関数呼び出しの引数および複数変数宣言でも区切り記号としてカンマが使用されますが、この場合はカンマ演算子ではないことに注意してください。
算術演算子は、データ タイプ char、int、および real で使用できます(++、--、%、%= を除く)。
単項:
| + | 単項加算 |
| - | 単項マイナス |
| ++ | プリインクリメントまたはポストインクリメント |
| -- | プリデクリメントまたはポストデクリメント |
二項:
| * | 乗算 |
| / | 除算 |
| % | 余り(絶対値) |
| + | バイナリ加算 |
| - | 二項減算 |
割り当て:
| = | 単純割り当て |
| *= | 積を割り当て |
| /= | 商を割り当て |
| %= | 余りを割り当て(絶対値) |
| += | 合計を割り当て |
| -= | 差を割り当て |
文字列演算子は、データ タイプ char、int、および string で使用できます。左オペランドは、常に string 型である必要があります。
二項:
| + | 連結 |
割り当て:
| = | 単純割り当て |
| += | 文字列に付加 |
+ 演算子は、2 つの文字列を連結するか、文字列の末尾に 1 文字を追加して、結果の文字列を返します。
+= 演算子は、指定された文字列の末尾に文字列または文字を付加します。