「演算子」の版間の差分
編集の要約なし |
細 (+Category:言語仕様) |
||
(2人の利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
演算子とは与えられたオペランド(式)を対象に評価を行い、結果を返す動作を提供します。また、ものによってはそれ以外の副作用を生じるものがあります。ABでは下記の演算子が利用できます。 | |||
== 代入演算子 == | == 代入演算子 == | ||
左辺の値を右辺で与えられた値にする副作用を持ちます。式の結果の参照は不可能です。 | |||
''A'' = ''B'' '単純代入 | |||
''A'' *= ''B'' '乗算代入 | |||
''A'' /= ''B'' '除算代入 | |||
''A'' \= ''B'' '整数除算代入 | |||
''A'' mod= ''B'' '乗除代入 | |||
''A'' += ''B'' '加算代入 | |||
''A'' -= ''B'' '減算代入 | |||
''A'' <<= ''B'' '左シフト代入 | |||
''A'' >>= ''B'' '右シフト代入 | |||
''A'' and= ''B'' '論理積代入 | |||
''A'' or= ''B'' '論理和代入 | |||
''A'' xor= ''B'' '排他的論理和代入 | |||
=== 例 === | |||
A = B | |||
B式の演算結果がAの型に暗黙的にキャストされ(キャストの種類によっては警告・エラーになる場合があります)、Aに代入されます。 | |||
その他の代入演算子の例を挙げてみます。 | |||
A and= B | |||
このコードは、Aが一度しか参照されない点を除き、下記のコードと同等の意味になります。 | |||
A = A and B | |||
==インクリメント・デクリメント演算子== | |||
''A''++ 'インクリメント | |||
''A''-- 'デクリメント | |||
Aが数値型のとき、インクリメント演算子は値を1増やし、デクリメント演算子は値を1減らす副作用を持ちます。現在のところ式の結果を使用することはできません。 | |||
===New/Delete演算子=== | |||
New ''T'' | |||
Delete ''obj'' | |||
Tには型(現在クラスのみ)を指定します。指定された型のインスタンスをヒープに生成し、Tが参照型の場合、それへの参照を結果として返します。 | |||
Deleteは互換性のためのみに存在します。 | |||
== キャスト演算子 == | == キャスト演算子 == | ||
''A'' As ''B'' | |||
Bには型名を指定します。AはBの型にキャストされます。 | |||
== 算術演算子 == | == 算術演算子 == | ||
''A'' ^ ''B'' '指数演算 | |||
- ''A'' 'マイナス符号 | |||
''A'' * ''B'' '乗算 | |||
''A'' / ''B'' '除算 | |||
''A'' \ ''B'' '整数除算 | |||
''A'' mod ''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'' <= ''B'' 'AはB以上 | |||
''A'' >= ''B'' 'AはB以下 | |||
条件が一致したときは "-1" が、一致しなかったときは "0" が返ります。 | |||
== 論理演算子 == | == 論理演算子 == | ||
Not ''A'' '論理否定 | |||
''A'' and ''B'' '論理積 | |||
''A'' or ''B'' '論理積 | |||
''A'' xor ''B'' '排他的論理和 | |||
優先順位は上に位置するものほど高くなっています。なお、ビット演算子としても機能します。 | |||
== 全体の優先順位 == | |||
優先順位はNew演算子、キャスト演算子、算術演算子、関係演算子、論理演算子、代入演算子及びインクリメント・デクリメント演算子の順になります。 | |||
== | == 結合規則 == | ||
ABの式は左結合です。同一優先順位の演算子が一つの式に複数存在するときは、式は左から右へ順に評価されます。式の一部を他の部分より優先的に評価する場合は、括弧を使います。下記に例を示します。 | |||
Print 128/32/4 | |||
Print 128 / (32/4) | |||
一番目の式は左から順に式が評価されるため、"128÷32" の結果から4を割ります。二番目の式は括弧内の "32÷4" が優先的に評価され、その結果で128を割ります。 | |||
[[Category:言語仕様|えんさんし]] |
2007年8月6日 (月) 02:29時点における最新版
演算子とは与えられたオペランド(式)を対象に評価を行い、結果を返す動作を提供します。また、ものによってはそれ以外の副作用を生じるものがあります。ABでは下記の演算子が利用できます。
代入演算子
左辺の値を右辺で与えられた値にする副作用を持ちます。式の結果の参照は不可能です。
A = B '単純代入 A *= B '乗算代入 A /= B '除算代入 A \= B '整数除算代入 A mod= B '乗除代入 A += B '加算代入 A -= B '減算代入 A <<= B '左シフト代入 A >>= B '右シフト代入 A and= B '論理積代入 A or= B '論理和代入 A xor= B '排他的論理和代入
例
A = B
B式の演算結果がAの型に暗黙的にキャストされ(キャストの種類によっては警告・エラーになる場合があります)、Aに代入されます。
その他の代入演算子の例を挙げてみます。
A and= B
このコードは、Aが一度しか参照されない点を除き、下記のコードと同等の意味になります。
A = A and B
インクリメント・デクリメント演算子
A++ 'インクリメント A-- 'デクリメント
Aが数値型のとき、インクリメント演算子は値を1増やし、デクリメント演算子は値を1減らす副作用を持ちます。現在のところ式の結果を使用することはできません。
New/Delete演算子
New T Delete obj
Tには型(現在クラスのみ)を指定します。指定された型のインスタンスをヒープに生成し、Tが参照型の場合、それへの参照を結果として返します。
Deleteは互換性のためのみに存在します。
キャスト演算子
A As B
Bには型名を指定します。AはBの型にキャストされます。
算術演算子
A ^ B '指数演算 - A 'マイナス符号 A * B '乗算 A / B '除算 A \ B '整数除算 A mod 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 <= B 'AはB以上 A >= B 'AはB以下
条件が一致したときは "-1" が、一致しなかったときは "0" が返ります。
論理演算子
Not A '論理否定 A and B '論理積 A or B '論理積 A xor B '排他的論理和
優先順位は上に位置するものほど高くなっています。なお、ビット演算子としても機能します。
全体の優先順位
優先順位はNew演算子、キャスト演算子、算術演算子、関係演算子、論理演算子、代入演算子及びインクリメント・デクリメント演算子の順になります。
結合規則
ABの式は左結合です。同一優先順位の演算子が一つの式に複数存在するときは、式は左から右へ順に評価されます。式の一部を他の部分より優先的に評価する場合は、括弧を使います。下記に例を示します。
Print 128/32/4 Print 128 / (32/4)
一番目の式は左から順に式が評価されるため、"128÷32" の結果から4を割ります。二番目の式は括弧内の "32÷4" が優先的に評価され、その結果で128を割ります。