演算子の優先順位
[Wikipedia|▼Menu]

演算子の優先順位 (えんざんしのゆうせんじゅんい、: precedence of operators) とは、演算子を利用しているような数式などが、どのように結び付いてグループ化されるべきであるかを、優先順位すなわち構文における優先度の強弱によって、あらかじめ暗黙に定めた規則である。数学ではしばしば、目的のために新しい演算子を導入することがあるが、そういう場合に優先順位があるのなら共通の暗黙の諒解は無いのだから規則を明示する必要がある。また、プログラミング言語では以下に述べるような規則の場合もあるが、APLのように優先順位は無く常に右から左に計算する、というような言語もあるといったように、その言語の設計者の考え方次第である。

算数(初等教育での数学)などが採用している規則では、乗除の演算子は加減の演算子より優先順位が高い。この規則により、2 + 3 × 4 という式における結び付きは、括弧で明示すると 2 + (3 × 4) となる。優先順位があることで、グループ化の明示のための記号である ( と )、{ と }、[ と ] などといった括弧の多用がある程度緩和される。

例えば、一般に多項式は、 a + b × x + c × x 2 + d × x 3 {\displaystyle a+b\times x+c\times x^{2}+d\times x^{3}}

といったような形で暗黙の優先順位を利用して書かれるが、もし優先順位が無かったら、 a + ( b × x ) + ( c × x 2 ) + ( d × x 3 ) {\displaystyle a+(b\times x)+(c\times x^{2})+(d\times x^{3})}

と書かねばならない。

一方で、演算子の優先順位があるために、括弧の多用が必要になる場合もある。前述の多項式をホーナー法で計算する場合、次の式のように変形するのであるが、 ( ( d × x + c ) × x + b ) × x + a {\displaystyle ((d\times x+c)\times x+b)\times x+a}

もし、演算子の優先順位が無く、左から右に計算するという規則だけだったならばこの式には括弧は不要である。

以上のように、演算子の優先順位というものは、そのような規則があったほうが良い場合のほうが比較的多いため、広く使われている暗黙の規則、という程度のものである。

数学史的には、代数学的記法が導入された際、乗法が加法より優先されるようになった[1]。したがって、3 + 4 × 5 = 4 × 5 + 3 = 23 となる。冪乗が16世紀から17世紀に導入されたとき、加法と乗法より優先されるとされ、底の右肩に冪指数を記述するようになった。したがって 3 + 52 = 28 であり、3 × 52 = 75 となる。演算順序を変えたい場合、かつては括線(英語版)(オーバーラインまたは下線)を使っていた。今日では括弧を使って、先に評価すべき式の部分を明示的に囲む。したがって、乗法の前に加法を行うなら (2 + 3) × 4 = 20 などとし、冪乗の前に加法を行うなら (3 + 5)2 = 64 などとする。
概要

冒頭で述べた算数(初等教育での数学)での規則に加え、中等教育(日本の制度における高等学校などまでに相当)で使う演算子まで含め、ここでは説明する。なお、本来であれば2項演算子と単項演算子など、きちんと分類を考えて体系立った説明が必要だが、以下はそのようにはなっていない[2]
括弧内の項

冪乗冪根

乗法除法

加法減法

これの意味するところは、例えばある数式の項の前後にそれぞれ異なる演算子があった場合、上記一覧の上の方(数字の若い方)にある演算子を先に適用すべきだということである。加法と乗法の交換法則および結合法則により、項の加算は任意の順序で可能であり、乗算も任意の順序で乗算可能だが、それらが混在している場合は標準の優先順位に従わなければならない。

除法を逆数による乗法として扱うことができ、減法を加法的逆元の加法として扱うことができる。すなわち、3 ÷ 4 = 3 ? ? である。言い換えれば、3を4で割った商は、3と ? をかけた積と等しい。同様に 3 ? 4 = 3 + (?4) であり、3と4の差は正の3と負の4の和と等しい。この理解により、 1 ? 3 + 7 という式は1と負の3と7の和とみなすことができ、任意の順序で計算可能である。すなわち (1 ? 3) + 7 = ?2 + 7 = 5 と計算することもできるし、 (7 ? 3) + 1 = 4 + 1 = 5 と計算することもできる。項の順序を入れ替える際、負号を常に3に付属させることが重要である。1 ? (3 + 7) = 1 ? 10 = ? 9 と計算してはいけない。

平方根記号 √ は被開数(平方根を求める対象となっている数)をグループ化する記号を必要とする。通常使われるグループ化の記号は被開数の上にひかれる横線(括線(英語版))である。他の一般的関数は曖昧さを防ぐために入力を括弧で囲むが、入力が単項式等であれば括弧を省くこともある。例えば、sin x = sin(x) だが、sin x + y = sin(x) + y となる。なぜなら x + y が単項式でないためである。計算機では、一般に全ての関数の入力を括弧で囲む必要がある。

冪指数が積み重なっている場合、一番上の冪乗から計算する。

グループ化の記号は通常の演算子の優先順位を無効にすることができる。グループ化された部分は1つの式として扱うことができる。交換および分配法則を使えばグループ化記号を排除することができる。
例 1 + 3 + 5 = 4 + 5 = 2 + 5 = 7 {\displaystyle {\sqrt {1+3}}+5={\sqrt {4}}+5=2+5=7\,}

水平な線分(括線)はグループ化記号として機能する。 1 + 2 3 + 4 + 5 = 3 7 + 5 {\displaystyle {\frac {1+2}{3+4}}+5={\frac {3}{7}}+5}

読みやすくするため、通常の丸括弧 ( ) だけでなく、角括弧 [ ] や波括弧 { } をグループ化記号として使うことがある。例えば次のような式である。 [ ( 1 + 2 ) − 3 ] − ( 4 − 5 ) = [ 3 − 3 ] − ( − 1 ) = 1 {\displaystyle [(1+2)-3]-(4-5)=[3-3]-(-1)=1\,}
問題点

以上のような規則は、しばしば混乱している。また、身近なコンピュータプログラム(ソフトウェア)などでの扱いが算数教育などでの扱いと違いがあったりする場合には、問題だと主張されることなどもある。

単項演算子としてのマイナス記号(負号)の扱い方はいくつかある。普通に書いた場合、−32 は −(32) = −9 を意味するが[3]、数式を扱うアプリケーションやプログラミング言語(特に Microsoft Office Excelプログラミング言語bc)では単項演算子を二項演算子より優先しているためマイナス記号は冪乗より優先順位が高く、−32 は (−3)2 = 9 と解釈される[4]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:28 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef