Pascal - 運算子



運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。Pascal 允許以下型別的運算子:

  • 算術運算子
  • 關係運算符
  • 布林運算子
  • 位運算子
  • 集合運算子
  • 字串運算子

讓我們逐一討論算術運算子、關係運算符、布林運算子和位運算子。稍後我們將討論集合運算子和字串操作。

算術運算子

下表顯示了 Pascal 支援的所有算術運算子。假設變數A的值為 10,變數B的值為 20,則:

顯示示例

運算子 描述 示例
+ 將兩個運算元相加 A + B 將得到 30
- 從第一個運算元中減去第二個運算元 A - B 將得到 -10
* 將兩個運算元相乘 A * B 將得到 200
/ 將分子除以分母 B / A 將得到 2
% 模運算子,整數除法後的餘數 B % A 將得到 0

關係運算符

下表顯示了 Pascal 支援的所有關係運算符。假設變數A的值為 10,變數B的值為 20,則:

顯示示例

運算子 描述 示例
= 檢查兩個運算元的值是否相等,如果相等,則條件為真。 (A = B) 為假。
<> 檢查兩個運算元的值是否相等,如果不相等,則條件為真。 (A <> B) 為真。
> 檢查左運算元的值是否大於右運算元的值,如果是,則條件為真。 (A > B) 為假。
< 檢查左運算元的值是否小於右運算元的值,如果是,則條件為真。 (A < B) 為真。
>= 檢查左運算元的值是否大於或等於右運算元的值,如果是,則條件為真。 (A >= B) 為假。
<= 檢查左運算元的值是否小於或等於右運算元的值,如果是,則條件為真。 (A <= B) 為真。

布林運算子

下表顯示了 Pascal 語言支援的所有布林運算子。所有這些運算子都作用於布林運算元併產生布爾結果。假設變數A的值為 true,變數B的值為 false,則:

顯示示例

運算子 描述 示例
and 稱為布林 AND 運算子。如果兩個運算元都為真,則條件為真。 (A and B) 為假。
and then 它類似於 AND 運算子,但是它保證了編譯器評估邏輯表示式的順序。從左到右,只有在必要時才評估右運算元。 (A and then B) 為假。
or 稱為布林 OR 運算子。如果兩個運算元中的任何一個為真,則條件為真。 (A or B) 為真。
or else 它類似於布林 OR,但是它保證了編譯器評估邏輯表示式的順序。從左到右,只有在必要時才評估右運算元。 (A or else B) 為真。
not 稱為布林 NOT 運算子。用於反轉其運算元的邏輯狀態。如果一個條件為真,則邏輯 NOT 運算子將使其變為假。 not (A and 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,即 0000 1100
| 二進位制 OR 運算子如果位存在於任何一個運算元中,則將該位複製。 (A | B) 將得到 61,即 0011 1101
! 二進位制 OR 運算子如果位存在於任何一個運算元中,則將該位複製。它與 | 運算子相同。 (A ! B) 將得到 61,即 0011 1101
~ 二進位制反碼運算子是一元運算子,其作用是“翻轉”位。 (~A ) 將得到 -61,由於帶符號二進位制數,所以在二進位制補碼形式下為 1100 0011。
<< 二進位制左移運算子。左運算元的值向左移動右運算元指定的位數。 A << 2 將得到 240,即 1111 0000
>> 二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。 A >> 2 將得到 15,即 0000 1111

請注意,Pascal 的不同實現方式在位運算子方面有所不同。但是,我們在此使用的編譯器 Free Pascal 支援以下位運算子:

運算子 操作
not 按位 NOT
and 按位 AND
or 按位 OR
xor 按位異或
shl 按位左移
shr 按位右移
<< 按位左移
>> 按位右移

Pascal 中的運算子優先順序

運算子優先順序決定了表示式中項的組合方式。這會影響表示式的計算方式。某些運算子的優先順序高於其他運算子;例如,乘法運算子的優先順序高於加法運算子。

例如 x = 7 + 3 * 2;此處,x 被賦值為 13,而不是 20,因為運算子 * 的優先順序高於 +,所以它首先與 3*2 相乘,然後加到 7 中。

此處,優先順序最高的運算子出現在表格的頂部,優先順序最低的運算子出現在底部。在表示式中,將首先計算優先順序較高的運算子。

顯示示例

運算子 優先順序
~, not, 最高
*, /, div, mod, and, &
|, !, +, -, or,
=, <>, <, <=, >, >=, in
or else, and then 最低
廣告
© . All rights reserved.