- Pascal 教程
- Pascal - 首頁
- Pascal - 概述
- Pascal - 環境設定
- Pascal - 程式結構
- Pascal - 基本語法
- Pascal - 資料型別
- Pascal - 變數型別
- Pascal - 常量
- Pascal - 運算子
- Pascal - 決策
- Pascal - 迴圈
- Pascal - 函式
- Pascal - 過程
- Pascal - 變數作用域
- Pascal - 字串
- Pascal - 布林值
- Pascal - 陣列
- Pascal - 指標
- Pascal - 記錄
- Pascal - 變體
- Pascal - 集合
- Pascal - 檔案處理
- Pascal - 記憶體
- Pascal - 單元
- Pascal - 日期和時間
- Pascal - 物件
- Pascal - 類
- Pascal 有用資源
- Pascal - 快速指南
- Pascal - 有用資源
- Pascal - 討論
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 | 最低 |