Pascal-演算子
演算子は、特定の数学的または論理的操作を実行するようにコンパイラーに指示する記号です。Pascalでは、次のタイプの演算子を使用できます-
- 算術演算子
- 関係演算子
- ブール演算子
- ビット演算子
- 演算子を設定します
- 文字列演算子
算術演算子、リレーショナル演算子、ブール演算子、およびビット演算子について1つずつ説明します。集合演算子と文字列操作については後で説明します。
算術演算子
次の表は、Pascalでサポートされているすべての算術演算子を示しています。変数を想定A 10と変数を保持します B 20を保持し、次に−
例を表示
オペレーター | 説明 | 例 |
---|---|---|
+ | 2つのオペランドを追加します | A + Bは30を与えます |
- | 最初のオペランドから2番目のオペランドを減算します | A-Bは-10を与えます |
* | 両方のオペランドを乗算します | A * Bは200を与えます |
/ | 分子を分母で割る | B / Aは2を与えます |
% | モジュラス演算子と整数除算後の余り | B%Aは0を与えます |
関係演算子
次の表は、Pascalでサポートされているすべての関係演算子を示しています。変数を想定A 10と変数を保持します B 20を保持し、次に−
例を表示
オペレーター | 説明 | 例 |
---|---|---|
= | 2つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が真になります。 | (A = B)は真ではありません。 |
<> | 2つのオペランドの値が等しいかどうかをチェックし、値が等しくない場合は、条件が真になります。 | (A <> B)は真です。 |
>> | 左のオペランドの値が右のオペランドの値より大きいかどうかをチェックし、大きい場合は条件が真になります。 | (A> B)は正しくありません。 |
< | 左のオペランドの値が右のオペランドの値よりも小さいかどうかをチェックし、小さい場合は条件が真になります。 | (A <B)は真です。 |
> = | 左のオペランドの値が右のオペランドの値以上であるかどうかをチェックし、そうである場合、条件は真になります。 | (A> = B)は正しくありません。 |
<= | 左のオペランドの値が右のオペランドの値以下であるかどうかをチェックし、そうである場合は、条件が真になります。 | (A <= B)は真です。 |
ブール演算子
次の表は、Pascal言語でサポートされているすべてのブール演算子を示しています。これらの演算子はすべてブールオペランドで機能し、ブール結果を生成します。変数を想定A 真で可変である B falseを保持し、その後−
例を表示
オペレーター | 説明 | 例 |
---|---|---|
そして | ブールAND演算子と呼ばれます。両方のオペランドが真の場合、条件は真になります。 | (AとB)は誤りです。 |
その後 | AND演算子に似ていますが、コンパイラが論理式を評価する順序を保証します。左から右および右のオペランドは、必要な場合にのみ評価されます。 | (A、次にB)は偽です。 |
または | ブールOR演算子と呼ばれます。2つのオペランドのいずれかが真の場合、条件は真になります。 | (AまたはB)は真です。 |
またはそうでなければ | これはブールORに似ていますが、コンパイラが論理式を評価する順序を保証します。左から右および右のオペランドは、必要な場合にのみ評価されます。 | (AまたはB)は真です。 |
ない | ブールNOT演算子と呼ばれます。オペランドの論理状態を逆にするために使用されます。条件がtrueの場合、LogicalNOT演算子はそれをfalseにします。 | (AとB)は真ではありません。 |
ビット演算子
ビット単位の演算子はビットを処理し、ビットごとの演算を実行します。これらの演算子はすべて整数オペランドで機能し、整数の結果を生成します。ビット単位と(&)、ビット単位または(|)、およびビット単位ではない(〜)の真理値表は次のとおりです。
p | q | p&q | p | q | 〜p | 〜q |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
A = 60の場合を想定します。およびB = 13; 現在、バイナリ形式では次のようになります-
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A ^ B = 0011 0001
〜A = 1100 0011
Pascalでサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持すると仮定すると、次のようになります。
例を表示
オペレーター | 説明 | 例 |
---|---|---|
& | バイナリAND演算子は、両方のオペランドに存在する場合、結果にビットをコピーします。 | (A&B)は12、つまり00001100を与えます |
| | バイナリOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 | (A | B)は61を与えます。これは00111101です。 |
! | バイナリOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。それと同じ| オペレーター。 | (A!B)は61を返します。これは00111101です。 |
〜 | Binary Ones Complement Operatorは単項であり、ビットを「反転」させる効果があります。 | (〜A)は-61を返します。これは、符号付き2進数のため、2の補数形式の11000011です。 |
<< | バイナリ左シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ左に移動します。 | << 2は240、つまり11110000になります |
>> | バイナリ右シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。 | >> 2は15になります。これは00001111です。 |
Pascalの実装が異なれば、ビット演算子が異なることに注意してください。ただし、ここで使用したコンパイラであるFree Pascalは、次のビット演算子をサポートしています。
演算子 | 操作 |
---|---|
ない | ビット単位ではありません |
そして | ビットごとのAND |
または | ビットごとのOR |
xor | ビット単位の排他的論理和 |
shl | 左にビット単位でシフト |
shr | ビット単位で右にシフト |
<< | 左にビット単位でシフト |
>> | ビット単位で右にシフト |
パスカルでのオペレーターの優先順位
演算子の優先順位は、式内の用語のグループ化を決定します。これは、式の評価方法に影響します。特定の演算子は他の演算子よりも優先されます。たとえば、乗算演算子は加算演算子よりも優先されます。
たとえば、x = 7 + 3 * 2; ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2が乗算され、次に7に加算されます。
ここでは、優先順位が最も高い演算子がテーブルの上部に表示され、優先順位が最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
例を表示
オペレーター | 優先順位 |
---|---|
〜、ではなく、 | 最高 |
*、/、div、mod、および、& | |
|、!、+、-、または、 | |
=、<>、<、<=、>、> =、 | |
またはそれ以外の場合、 | 最低 |