ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
種類ごとの演算子の分類(順不同)。
算術演算子 | ||
---|---|---|
機能 | 書式 | 多重定義 |
単項プラス | +a | ○ |
加算 | a + b | ○ |
前置インクリメント | ++a | ○ |
後置インクリメント | a++ | ○ |
加算代入 | a += b | ○ |
単項マイナス | -a | ○ |
減算 | a - b | ○ |
前置デクリメント | --a | ○ |
後置デクリメント | a-- | ○ |
減算代入 | a -= b | ○ |
乗算 | a * b | ○ |
乗算代入 | a *= b | ○ |
除算 | a / b | ○ |
除算代入 | a /= b | ○ |
剰余 | a % b | ○ |
剰余代入 | a %= b | ○ |
比較演算子 | ||
機能 | 書式 | 多重定義 |
等価 | a == b | ○ |
不等価 | a != b | ○ |
小なり | a < b | ○ |
小なりイコール | a <= b | ○ |
大なり | a > b | ○ |
大なりイコール | a >= b | ○ |
論理演算子 | ||
機能 | 書式 | 多重定義 |
論理否定 | !a | ○ |
論理積 | a && b | ○ |
論理和 | a || b | ○ |
ビット演算子 | ||
機能 | 書式 | 多重定義 |
ビット否定 | ~a | ○ |
ビット積 | a & b | ○ |
ビット積代入 | a &= b | ○ |
ビット排他的論理和 | a ^ b | ○ |
ビット排他的論理和代入 | a ^= b | ○ |
ビット和 | a | b | ○ |
ビット和代入 | a |= b | ○ |
左シフト | << | ○ |
左シフト代入 | <<= | ○ |
右シフト | >> | ○ |
右シフト代入 | >>= | ○ |
型キャスト演算子 | ||
機能 | 書式 | 多重定義 |
const型キャスト | const_cast<type>(a) | × |
動的型キャスト | dynamic_cast<type>(a) | × |
静的型キャスト | static_cast<type>(a) | × |
強制型キャスト | reinterpret_cast<type>(a) | × |
型キャスト | (type)a | ○ |
型キャスト(関数スタイル) | type(a) | ○ |
その他 | ||
機能 | 書式 | 多重定義 |
スコープの解決 | :: | × |
代入 | a = b | ○ |
関数呼び出し | a() | ○ |
配列添字参照 | a[b] | ○ |
直接メンバーアクセス | a.b | × |
直接メンバーポインター | a.*b | × |
間接メンバーアクセス | a->b | ○ |
間接メンバーポインター | a->*b | ○ |
アドレス取得 | &a | ○ |
間接参照、参照外し | *a | ○ |
条件演算子 | a ? b : c | × |
順次演算子 | a , b | ○ |
実行時型情報 | typeid(a) typeid(type) | × |
サイズの取得 | sizeof(a) sizeof(type) | × |
動的な領域確保 | new type | ○ |
動的な配列領域確保 | new type[n] | ○ |
動的な領域開放 | delete a | ○ |
動的な配列領域開放 | new delete[] a | ○ |
例外送出 | throw a | × |
()でくくられていない式において、優先的に結びつく順序を、優先順位という。
順位の番号は、この表における整理のためのもので、規格で定められているわけではない。
順位 | 演算子 | 機能 | 結合方向 | 多重定義 |
---|---|---|---|---|
1 | :: | スコープの解決 | ‐ | × |
2 | () | 関数呼び出し | 左から右 | ○ |
[] | 配列添字参照 | ○ | ||
. | 直接メンバーアクセ ス | × | ||
-> | 間接メンバーアクセス | ○ | ||
++ | 後置インクリメント | ○ | ||
-- | 後置デクリメント | ○ | ||
typeid | 実行時型情報 | ‐ | × | |
const_cast | 型キャスト | ‐ | × | |
dynamic_cast | 型キャスト | ‐ | × | |
static_cast | 型キャスト | ‐ | × | |
reinterpret_cast | 型キャスト | ‐ | × | |
タイプ() | 型キャスト | ○ | ||
3 | ++ | 前置インクリメント | 右から左 | ○ |
-- | 前置デクリメント | ○ | ||
+ | 単項プラス | ○ | ||
- | 単項マイナス | ○ | ||
~ | ビット否定 | ○ | ||
! | 論理否定 | ○ | ||
& | アドレス取得 | ○ | ||
* | 間接参照、参照外し | ○ | ||
(タイプ) | 型キャスト | ○ | ||
sizeof | サイズの取得 | × | ||
new | 動的な領域確保 | ‐ | ○ | |
new[] | 動的な配列領域確保 | ‐ | ○ | |
delete | 動的な領域開放 | ‐ | ○ | |
delete[] | 動的な配列領域開放 | ‐ | ○ | |
4 | .* | メンバーへのポインター | 左から右 | × |
->* | メンバーへのポインター | ○ | ||
5 | * | 乗算 | ○ | |
/ | 除算 | ○ | ||
% | 剰余 | ○ | ||
6 | + | 加算 | ○ | |
- | 減算 | ○ | ||
7 | << | 左シフト | ○ | |
>> | 右シフト | ○ | ||
8 | < | 小なり | ○ | |
<= | 小なりイコール | ○ | ||
9 | > | 大なり | ○ | |
>= | 大なりイコール | ○ | ||
10 | == | イコール(等価) | ○ | |
!= | ノットイコール(不等価) | ○ | ||
11 | & | ビット積(AND) | ○ | |
12 | ^ | ビット排他的論理和(XOR) | ○ | |
13 | | | ビット和(OR) | ○ | |
14 | && | 論理積 | ○ | |
15 | || | 論理和 | ○ | |
16 | ? : | 条件演算子 | 右から左 | × |
17 | = | 代入 | ○ | |
*= | 乗算代入 | ○ | ||
/= | 除算代入 | ○ | ||
%= | 剰余代入 | ○ | ||
+= | 加算代入 | ○ | ||
-= | 減算代入 | ○ | ||
<<= | 左シフト代入 | ○ | ||
>>= | 右シフト代入 | ○ | ||
&= | ビット積代入 | ○ | ||
^= | ビット排他的論理和代入 | ○ | ||
|= | ビット和代入 | ○ | ||
throw | 例外送出 | ‐ | × | |
18 | , | 順次演算子 | 左から右 | ○ |
C/C++の優先順位は必ずしも適正とは言い難く、この優先順位にはいくつか理不尽な問題点が存在する。
代表例として、ビット演算(ビット積、ビット排他的論理和、ビット和)の優先順位が不当に低いことが挙げられる。イコール(等価)演算子よりも低いため、次のような演算式は、期待通りには動作しない。
if (a & b == c) { ... }
a&bの結果がcと等価なら、という条件を想定しているが、残念ながら、この式「a & b == c」は、「a & (b == c)」と解釈されるため、想定通りには動作しない。()をきちんと書かねばならないのである。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます