
C++ 提供多樣、功能完整的運算子 (operator) ,依運算子結合後運算的優先次序 (precedence) ,如下列表
| 運算子 | 結合規則 | |
|---|---|---|
| 1 | :: | 左到右 |
| 2 | () | 左到右 |
| [] | ||
| -> | ||
| . | ||
| ++ | ||
| -- | ||
| dynamic_cast | ||
| static_cast | ||
| reinterpret_cast | ||
| const_cast | ||
| typeid | ||
| 3 | ! | 右到左 |
| not | ||
| ~ | ||
| compl | ||
| ++ | ||
| -- | ||
| - | ||
| + | ||
| * | ||
| & | ||
| sizeof | ||
| new | ||
| new [] | ||
| delete | ||
| delete [] | ||
| (type) | ||
| 4 | ->* | 左到右 |
| .* | ||
| 5 | * | 左到右 |
| / | ||
| % | ||
| 6 | + | 左到右 |
| - | ||
| 7 | << | 左到右 |
| >> | ||
| 8 | < | 左到右 |
| <= | ||
| > | ||
| >= | ||
| 9 | == | 左到右 |
| eq | ||
| != | ||
| not_eq | ||
| 10 | & | 左到右 |
| bitand | ||
| 11 | ^ | 左到右 |
| xor | ||
| 12 | | | 左到右 |
| bitor | ||
| 13 | && | 左到右 |
| and | ||
| 14 | || | 左到右 |
| or | ||
| 15 | ?: | 右到左 |
| 16 | = | 右到左 |
| += | ||
| -= | ||
| *= | ||
| /= | ||
| %= | ||
| &= | ||
| and_eq | ||
| ^= | ||
| xor_eq | ||
| |= | ||
| or_eq | ||
| <<= | ||
| >>= | ||
| 17 | throw | |
| 18 | , | 左到右 |
依功能區分,可分為
- 算術運算子 (arithmetic operator)
- 遞增 (increment) 及遞減運算子 (decrement operator)
- 關係運算子 (relational operator)
- 邏輯運算子 (logical operator)
- 位元運算子 (bitwise operator)
- cast 運算子 (cast operator)
- sizeof 運算子 (sizeof operator)
- 指派運算子 (assignment operator)
- 條件運算子 (conditional operator)
- 跟指標 (pointer) 有關的運算子
- 跟參考 (reference) 有關的運算子
- 跟結構 (structure) 有關的運算子
- 跟陣列 (array) 有關的運算子
- 跟物件 (object) 有關的運算子
- 拋出例外 (exception) 有關的運算子
- 小括號跟逗點
算術運算子
C++ 的算術運算子包含加、減、乘、除、取餘數,皆需兩個運算元 (operand) 構成運算式 (expression) ,如下列表
| 運算子 | 功能 | 範例 |
|---|---|---|
| + | 加 | a + b |
| - | 減 | a - b |
| * | 乘 | a * b |
| / | 除 | a / b |
| % | 取餘數 | a % b |
遞增及遞減運算子
遞增及遞減則為單元運算子 (unary operator) ,也就是說只需要一個運算元即構成運算式,但在運算元有前後的差別
| 運算子 | 功能 | 範例 |
|---|---|---|
| ++ | 前遞增 | ++a |
| ++ | 後遞增 | a++ |
| -- | 前遞減 | --a |
| -- | 後遞減 | a-- |
關係運算子
C++ 的關係運算子都需要兩個運算元,包含小於、小於等於、大於、大於等於,另外有兩個測試相等性的運算子,運算結果會是 bool 型態的數值,不是 true 就是 false
| 運算子 | 功能 | 範例 |
|---|---|---|
| < | 小於 | a < b |
| <= | 小於等於 | a <= b |
| > | 大於 | a > b |
| >= | 大於等於 | a >= b |
| == | 相等 | a == b |
| != | 不等 | a != b |
邏輯運算子
C++ 的邏輯運算子包含邏輯非,施用於單一運算元,其他邏輯且、或都需要兩個運算元
| 運算子 | 功能 | 範例 |
|---|---|---|
| ! | 非 | !a |
| && | 且 | a && b |
| || | 或 | A || b |
位元運算子
C++ 亦提供給整數型態 (integer type) 進行逐位元運算的運算子,例如某 16 位元 (bit) 整數 (integer) 如下
0000111100001111
取其補數 (complement) 該整數會變成
1111000011110000
這樣的位元補數運算子在 C++ 是用 ~ 運算子,全部的位元運算子如下表
| 運算子 | 功能 | 範例 |
|---|---|---|
| & | 且 | a & b |
| | | 或 | a | b |
| ^ | 互斥或 | a ^ b |
| << | 向左位移 | a << b |
| >> | 向右位移 | a >> b |
| ~ | 取 1 的補數 | ~a |
cast 運算子
C++ 的 cast 運算子的用途作為強迫轉型 (explicit conversion) ,基本格式下

這樣子 operand 會被強迫轉換型態為小括弧中的 type 。
sizeof 運算子
C++ 的 sizeof 運算子的用途作為計算物件或資料型態所佔的位元組數 (byte) ,有以下三種形式
- sizeof (type name);
- sizeof (expr);
- sizeof expr;
指派運算子
C++ 最基本的指派運算子為單一個等號 = ,這是用來將等號右邊的值拷貝給給左邊的變數資料。等號也可以跟其他運算子合用,會直接將結果儲存到原變數之中,如
| 運算子 | 功能 | 範例 |
|---|---|---|
| = | 指派 | a = b |
| += | 相加同時指派 | a += b |
| -= | 相減同時指派 | a -= b |
| /= | 相除同時指派 | a /= b |
| %= | 取餘數同時指派 | a %= b |
| &= | 位元且同時指派 | a &= b |
| ^= | 位元互斥或同時指派 | a ^= b |
| |= | 位元或同時指派 | a |= b |
| <<= | 位元向左位移同時指派 | a <<= b |
| >>= | 位元向右位移同時指派 | a >>= b |
條件運算子
條件運算子是 C++ 裡唯一的三元運算子 ?: ,需要三個運算元,三者均可為運算式,形式如下

若運算式 expr1 為真,運算結果會是運算式 expr2 計算出的值,若為假,運算結果則是運算式 expr3 計算出的值。
跟指標有關的運算子
跟指標有關的運算子有 & 及 * ,往後才會陸續介紹。
跟參考有關的運算子
跟參考有關的運算子有 * ,往後才會陸續介紹。
跟結構有關的運算子
跟結構有關的運算子有 -< 及 . ,往後才會陸續介紹。
跟陣列有關的運算子
跟陣列有關的運算子有 [] ,往後才會陸續介紹。
跟物件有關的運算子
跟物件有關的運算子有 . 、 new 、 delete 、 ->* 及 .* ,往後才會陸續介紹。
拋出例外的運算子
拋出例外的運算子為 throw ,往後才會陸續介紹。
小括號跟逗點
小括號 () 的計算優先次序最高,因此小括號內的運算式會先被計算 (evaluate) ,而逗點 , 的計算優先次序最低,通常是用作分隔。
| 中英文術語對照 | |
|---|---|
| 運算子 | operator |
| 優先次序 | precedence |
| 算術運算子 | arithmetic operator |
| 遞增運算子 | increment operator |
| 遞減運算子 | decrement operator |
| 關係運算子 | relational operator |
| 邏輯運算子 | logical operator |
| 位元運算子 | bitwise operator |
| cast 運算子 | cast operator |
| sizeof 運算子 | sizeof operator |
| 指派運算子 | assignment operator |
| 條件運算子 | conditional operator |
| 指標 | pointer |
| 參考 | reference |
| 結構 | structure |
| 陣列 | array |
| 物件 | object |
| 例外 | exception |
| 運算元 | operand |
| 運算式 | expression |
| 單元運算子 | unary operator |
| 整數型態 | integer type |
| 位元 | bit |
| 整數 | integer |
| 補數 | complement |
| 強迫轉型 | explicit conversion |
| 位元組數 | byte |
| 計算 | evaluate |
您可以繼續參考
基本概念
標記
基本資料型態
相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁
參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial
C++ Primer, Fourth Edition, Stanley B. Lippman...
本文於 2013 年 1 月更新
沒有留言:
張貼留言