演算子 [Edit]

演算子とは

データに処理を加える記号のことを演算子といいます。一方の、演算子によって処理されるデータはオペランド、演算子とオペランドの組み合わせのように、値を生成する文をといいます。

例えば、' 1 + 2 ' という式は、' + ' が加算演算子、両端の ' 1 ' と ' 2 ' がオペランドです。
スクリプトを見やすくするために、演算子とオペランドの間に、スペース(半角)を挿入することができます。

演算子とオペランド説明図


演算子の分類

演算子をオペランドの数によって分類すると以下のようになります。

  • 単項演算子 --- オペランドをひとつ取る演算子(正負符号、インクリメント、デクリメント、new など)

  • ニ項演算子 --- オペランドをふたつ取る演算子(加算、減算をはじめとした大部分の演算子)

  • 三項演算子 --- オペランドを三つ取る演算子(条件演算子 ' ?: ' のみ)

また、処理内容によって分類すると以下のようになります。

  • 算術演算子 --- 数値の算術を行う演算子(+、-、*、/、%、++、--など)
  • 等価演算子 --- 2つのオペランドが等価(等しい)か否かをブールで返す演算子(==、!=)
  • 比較演算子 --- 2つのオペランドを比較し(大小、以上、以下)ブールで返す演算子(>、<、>=、<=)
  • 代入演算子 --- オペランドを変数に代入する演算子(=、+=、-=、*=、/=、%=)
  • 論理演算子 --- ブール値のオペランドを処理する演算子(&&、||、!)
  • ストリング演算子 --- ストリング(文字列)を操作する演算子(+ のみ)
  • ビット演算子 --- メモリ上のビットを操作する演算子(&、|、^、~、<<、>>、>>>など)
  • その他の演算子 --- 上記以外の演算子(new、delete など)

詳しくは各演算子のページをご覧ください。
なお、このサイトでは重要な演算子だけを扱います。それ以外の演算子については『ActionScript リファレンス』および『ActionScript辞書』をご覧ください。また分類も、Macromedia の分類と一部異なっています(Macromedia の分類には納得がいきませんので)。あらかじめご了承ください。


優先順位

演算子の使用に関して2つの注意点があります。

まず、ひとつ目は、優先順位です。
式のなかで複数の演算子を使用することはよくあります。この場合の処理の順序、どの演算子の処理が優先して処理されるのかが問題となります。

' n = 1 + 2 * 3 ; ' という式で考えてみましょう(*は乗算演算子です)。この式には、代入(=)、加算(+)、乗算(*)の3つの演算子が存在します。どの順番で、処理が行われるのでしょうか。代入を除いては、数学と同じ順序なので、これはむずかしくないですね。まず乗算、次に加算が処理され右辺の計算結果は '7' になります。最後に変数 'n' に '7' が代入されます。
このように、演算子どうしの優先順位は、あらかじめ決められています。複数の演算子を使用するときは、この優先順位を考える必要があるわけです。
なお、優先順位を変更したい場合にはカッコ()で該当個所をくくります。そうするとカッコでくくられた部分が最初に処理されるようになります。例えば ' n = (1 + 2)* 3 ; ' とすると、乗算よりも先に加算が行われ、'n' の値は '9' となります。カッコは複数使用することも可能です。

演算子の優先順位説明図

Flashの演算子の優先順位は、[ ヘルプ ] - [ ActionScript リファレンス ] - [ 演算子の優先順位と結合性 ] - [ 演算子リスト ] に一覧表が記載されています。そちらをご覧ください。


結合性

2つ目の注意点が結合性です。優先順位は、複数の異なる演算子が使用される場合に適用されるルールです。これに対し、結合性は、同じ演算子が複数使用される場合に適用されます。すなわち、同じ演算子が並んでいるときに、左右どちらの演算子が先に実行されるのかを示したものが結合性です。

具体例で見ていきましょう。
'1 + 2 + 3 ' という計算式は、どのような順序で実行されるのでしょうか。加算演算子の結合性は「左から右」です。まず '1 + 2' が実行され、次にその結果に '3' が加算されます。
では、'a = b = 5; ' という代入式の場合はどうでしょうか。代入演算子の結合性は、「右から左」です。まず 'b = 5' が実行され、次に 'a = b' が処理されます。
このように、演算子の結合性もあらかじめ決められています。同じ演算子を式の中で並べて使用するときには注意が必要です。ただし、単項演算子(一部例外あり)、代入演算子、三項演算子を除いた大部分の演算子は、結合性が「左から右」となっています。代入演算子の結合性が「右から左」であることを覚えておけば、優先順位ほど問題になることはないでしょう。
なお、結合性もカッコ()を使用することに、処理順序を変更することが可能です。

Flashの演算子の結合性は、下記演算子のページに記載しています。また、[ ヘルプ ] - [ ActionScript リファレンス ] - [ 演算子の優先順位と結合性 ] - [ 演算子リスト ] にも一覧表が記載されています。

・関連項目

算術演算子
等価演算子と比較演算子
代入演算子
ストリング演算子
論理演算子

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事