[前へ]   [目次へ]   [次へ]

演算子(C/C++)


   (05/06/19) 演算子リストの「/=(除算代入)」の解説が除算ではなく減算になっていたのを修正

プログラム言語では計算などを行う時、その演算種別を指定する記号などのことを「演算子」と呼びます。

C/C++言語では非常に多くの種類の演算子が定義されています。
この中にはよく使うものから滅多に使わないものまであります。

演算子には数種類の分類があります。


まず、「単項」「二項」「三項」という分類です。
この三種類は、その演算を行うのに必要な情報の数を示します。
この分類は次分類が「その他」のものには基本的にありません。
厳密にはあるのかもしれませんが・・・そこまで調べ切れなかったので・・・

例えば「 + 」の場合、「 5+15 」のように「5」と「15」の2つを取るので二項です。


次は、「算術」「ビット」「論理」「その他」という分類です。
これらは、その演算の動作による分類です。

「算術」は数学演算を行うものです。
加算や減算など、一般的に知られている計算が属します。

「ビット」は数値をビット単位で評価して演算を行うものです。
ORやANDなど、2進数で考える必要のある演算子が属します。

「論理」は主に条件を判定するための演算です。
不等式や等式が属します。

「その他」は・・・上のどれにも当てはまらないものです。
一見演算には見えないようなものが属します。


最後に、優先順位の分類です。
この分類は、ひとつの式中にいくつもの演算子が出てきたときに演算する順番を指定するものです。
この優先順位が高いものから評価されます。
また、「結合規則」というものがあり、これは優先順位が同じ時に左と右のどちらから評価するかを決定します。
「結合規則」は基本的に優先順位ごとに割り当てられています。
また、単項のものやその他分類の一部は結合規則が割り当てられていません。

優先順位は式を()で囲って分離するとその部分を最優先にできます。
( (2+5)*5で加算が優先されることと同じ。使い方も同じ)


それでは、最初のうちから比較的よく使う演算子の優先順位の一覧です。
リストの終わりへ
表記名前または意味種別優先順位結合規則解説備考
()関数呼び出しなしその他16目標の関数を呼び出します。
[]配列添字参照なしその他16目標の配列の指定された番号の要素になります。
++後置インクリメント単項算術16なし目標の変数に1加算を行います。加算は次回変数使用時に反映
--後置デクリメント単項算術16なし目標の変数に1減算を行います。減算は次回変数使用時に反映
++前置インクリメント単項算術15なし目標の変数に1加算を行います。
--前置デクリメント単項算術15なし目標の変数に1減算を行います。
!論理NOT(反転)単項論理15なし目標の真と偽を反転した値になります。
-算術否定単項算術15なし目標の正負を逆転した値になります。
*乗算二項算術13左右の乗算(掛け算)の結果になります。
/除算二項算術13左右の除算(割り算)の結果になります。
%剰余二項算術13左右の剰余(余りを求める)の結果になります。整数型のみ。
+加算二項算術12左右の加算(足し算)の結果になります。
-減算二項算術12左右の減算(引き算)の結果になります。
<より小さい二項論理10左辺が右辺より小さい時、真になります。
>より大きい二項論理10左辺が右辺より大きい時、真になります。
<=以下二項論理10左辺が右辺以下の時、真になります。
>=以上二項論理10左辺が右辺以上の時、真になります。
==等価二項論理9左辺と右辺が等しい時、真になります。
!=以外二項論理9左辺が右辺以外の時、真になります。
&&論理AND二項論理5左右が両方真の時、真になります。
||論理OR二項論理4左右の片方または両方が真の時、真になります。
=代入二項算術2右辺の内容を左辺に代入します。
*=乗算代入二項算術2右辺の内容で左辺を乗算します。
/=除算代入二項算術2右辺の内容で左辺を除算します。
%=剰余代入二項算術2右辺の内容で左辺を剰余します。整数型のみ。
+=加算代入二項算術2右辺の内容で左辺を加算します。
-=減算代入二項算術2右辺の内容で左辺を減算します。
完全な一覧は「各演算子の優先順位の一覧」にあります。(大きいので別ウィンドウの方がいいかも)

よく使うものといっても、既に27種あります。
とはいえ、馴染みのあるものが多いので、それほどきつくないはずです。

さて、完全なほうも見てきた方もいるかと思いますが、このかなり細かく分類された優先順位を
私が全て覚えているかといえば、ほとんど覚えていません。(笑)

というか、これ全部覚えるのは大変です。
この表も手元の資料とインターネットと自力検証によって完成しています。

私が覚えているのは、「代入系がほぼ最低順位」「算術演算は数学の順位に準ずる」「関数呼び出しはほぼ最高順位」ぐらいで、
他の部分は直接()使って順番指定してます。たとえ()が不要な場合でもです。
他、こうしておくといちいち優先順位表を出してこなくても読めるので便利です。


最後に、上の表で各演算子を軽く紹介しましたが、「前置インクリメント」と「後置インクリメント」のように
全く同じ表記のものなど、現時点ではそれらの識別方法などは解説していません。

演算子にはいくつかの使用方法パターンがあり、全く同じ表記を使うものでもそのパターンによってどの演算子かを識別します。
そこまで解説すると結構な量になるので、その辺は今後解説していきます。

[前へ]   [目次へ]   [次へ]

プログラミング講座 総合目次

最終更新 2008/10/17