「演算子」の版間の差分

提供: AB開発Wiki
ナビゲーションに移動検索に移動
(→‎論理演算子: ビット演算としても)
(インクリメント・デクリメント、New/Deleteを追加)
1行目: 1行目:
演算子とは与えられたオペランド(または式)を対象に評価を行い、結果を返す動作を提供します。ABでは下記の演算子が利用できます。
+
演算子とは与えられたオペランド(式)を対象に評価を行い、結果を返す動作を提供します。また、ものによってはそれ以外の副作用を生じるものがあります。ABでは下記の演算子が利用できます。
  
 
== 代入演算子 ==
 
== 代入演算子 ==
 +
左辺の値を右辺で与えられた値にする副作用を持ちます。式の結果の参照は不可能です。
 
  ''A'' =    ''B''  '単純代入
 
  ''A'' =    ''B''  '単純代入
 
  ''A'' *=  ''B''  '乗算代入
 
  ''A'' *=  ''B''  '乗算代入
17行目: 18行目:
 
=== 例 ===
 
=== 例 ===
 
  A = B
 
  A = B
B式の演算結果はAの型に暗黙的にキャストされ(キャストの種類によっては警告・エラーになる場合があります)、Aに代入されます。
+
B式の演算結果がAの型に暗黙的にキャストされ(キャストの種類によっては警告・エラーになる場合があります)、Aに代入されます。
  
 
その他の代入演算子の例を挙げてみます。
 
その他の代入演算子の例を挙げてみます。
24行目: 25行目:
 
  A = A and B
 
  A = A and B
  
 +
==インクリメント・デクリメント演算子==
 +
''A''++ 'インクリメント
 +
''A''-- 'デクリメント
 +
Aが数値型のとき、インクリメント演算子は値を1増やし、デクリメント演算子は値を1減らす副作用を持ちます。現在のところ式の結果を使用することはできません。
  
 +
===New/Delete演算子===
 +
New ''T''
 +
Delete ''obj''
 +
Tには型(現在クラスのみ)を指定します。指定された型のインスタンスをヒープに生成し、Tが参照型の場合、それへの参照を結果として返します。
 +
 +
Deleteは互換性のためのみに存在します。
  
 
== キャスト演算子 ==
 
== キャスト演算子 ==
42行目: 53行目:
 
  ''A'' >>  ''B''  '右シフト
 
  ''A'' >>  ''B''  '右シフト
 
  ''A'' <<  ''B''  '左シフト
 
  ''A'' <<  ''B''  '左シフト
優先順位は上に位置するものほど高くなっています。ただし、「乗算・除算・整数除算」、または「加算・減算」の優先順位は同一です。同一優先順位の演算子が一つの式に複数存在するときは、式は左から右へ順に評価されます。
+
優先順位は上に位置するものほど高くなっています。ただし、「乗算・除算・整数除算」、「加算・減算」、「右シフト・左シフト」の優先順位は同一です。同一優先順位の演算子が一つの式に複数存在するときは、式は左から右へ順に評価されます。
  
  
63行目: 74行目:
  
 
== 全体の優先順位 ==
 
== 全体の優先順位 ==
優先順位はキャスト演算子、算術演算子、関係演算子、論理演算子の順になります。
+
優先順位はNew演算子、キャスト演算子、算術演算子、関係演算子、論理演算子、代入演算子及びインクリメント・デクリメント演算子の順になります。
  
  
70行目: 81行目:
  
 
  Print 128/32/4
 
  Print 128/32/4
  Print 128/(32/4)
+
  Print 128 / (32/4)
  
 
一番目の式は左から順に式が評価されるため、"128÷32" の結果から4を割ります。二番目の式は括弧内の "32÷4" が優先的に評価され、その結果で128を割ります。
 
一番目の式は左から順に式が評価されるため、"128÷32" の結果から4を割ります。二番目の式は括弧内の "32÷4" が優先的に評価され、その結果で128を割ります。

2007年5月27日 (日) 16:32時点における版

演算子とは与えられたオペランド(式)を対象に評価を行い、結果を返す動作を提供します。また、ものによってはそれ以外の副作用を生じるものがあります。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を割ります。