在 MPLAB C18 語言基本資料處理中,所有的運算式都是由運算子 (Operator, 算符)、 運算元 (Operand) 與括號 (Delimiters) 組合起來的。在程式內運用許多的變數以及常數來代表一些資料,然後將運算後的結果儲存。
▼運算子優先順序:
| 運算子 Highest | 結合規則 |
| ( ) [ ] -> . | 左到右 |
| ! ~ ++ -- + - (type cast) * & sizeof | 右到左 |
| * / % | 左到右 |
| + - | 左到右 |
| << >> | 左到右 |
| < <= > >= | 左到右 |
| == != | 左到右 |
| & | 左到右 |
| ^ | 左到右 |
| | | 左到右 |
| && | 左到右 |
| || | 左到右 |
| ? | 右到左 |
| = += -= /= %= &= | 右到左 |
| , | 左到右 |
| Lowest |
▼例:
| Expression | Result | Note |
| 10 – 2 * 5 | 0 | * has higher precedence than + |
| (10 – 2) * 5 | 40 | |
| 0x20 | 0x01 != 0x01 | 0x20 | != has higher precedence than | |
| (0x20 | 0x01) != 0x01 | 1 | |
| 1 << 2 + 1 | 8 | + has higher precedence than << |
| (1 << 2 ) + 1 | 5 |
算術運算元 ( Arithmetic operators ):
C 語言的算術運算子包含加、減、乘、除、取餘數,皆需兩個運算元構成運算式。遞增及遞減則為單元運算子,也就是說只需要一個運算元即構成運算式,但在運算元有前後的差別。如下列表:
| 運算子 | 功能 | Description | 範例 |
| + | 加 | Add | a + b |
| - | 減 | Subtract | a - b |
| * | 乘 | Multiply | a * b |
| / | 除 | Divide | a / b |
| % | 取餘數 | Modulo | a % b |
| ++ | 前遞增 | Increment | ++a |
| ++ | 後遞增 | Increment | a++ |
| -- | 前遞減 | Decrement | --a |
| -- | 後遞減 | Decrement | a-- |
關係運算子 ( Relational operators ):
C 語言的關係運算子都需要兩個運算元,包含小於、小於等於、大於、大於等於,另外有兩個測試相等性的運算子,運算結果會以 0 表示假, 1 表示真。
| 運算子 | 功能 | Description | 範例 |
| < | 小於 | Less than | a < b |
| <= | 小於等於 | Less than or equal to | a <= b |
| > | 大於 | Greater than | a > b |
| >= | 大於等於 | Greater than or equal to | a >= b |
| == | 相等 | Equal to | a == b |
| != | 不等 | Not Equal to | a != b |
邏輯運算子 ( Logical operators ):C 語言的邏輯運算子包含邏輯非,施用於單一運算元,其他邏輯且、或都需要兩個運算元。
| 運算子 | 功能 | Description | 範例 |
| ! | 非 | NOT | !a |
| && | 且 | AND | a && b |
| || | 或 | OR | A || b |
位元運算子(Bitwise operators):
這樣的位元補數運算子在 C 是用 ~ 運算子,全部的位元運算子如下表:
| 運算子 | 功能 | Description | 範例 |
| & | 且 | AND | a & b |
| | | 或 | OR | a | b |
| ^ | 互斥或 | Exclusive OR | a ^ b |
| << | 向左位移 | Shift left | a << b |
| >> | 向右位移 | Shift right | a >> b |
| ~ | 取 1 的補數 | Complement | ~a |
2011 年 04 月 01 日 天氣報告
氣溫:20.3 度 @ 23:00
相對濕度:百分之97%
天氣:天色大致良好

沒有留言:
張貼留言