Skip to content

運算子

下文中的所有語法, a , b , c , condition1 , condition2 都是變數名稱。

算術運算子

名稱 語法 備註
正號(一元) +a
負號(一元) -a
加法(二元) a+b
減法(二元) a-b
乘法(二元) a*b
除法(二元) a/b
模數(二元) a%b 取餘數

遞增/遞減運算子

名稱 語法 備註
前綴遞增(一元) ++a 先遞增再回傳值
後綴遞增(一元) a++ 回傳值後再遞增
前綴遞減(一元) --a 先遞增再回傳值
後綴遞減(一元) a-- 回傳值後再遞減

位元運算子

名稱 語法 備註
位元 AND(一元) a&b
位元 XOR(一元) a^b
位元 OR(一元) `a b`
位元 一的補數(一元) ~a
位元左移(二元) a<<b
位元右移(二元) a>>b

賦值運算子

名稱 語法 備註
賦值(二元) a=b

算數/位元運算子皆可以和賦值運算子合併,如下表:

名稱 語法 備註
加法 + 賦值(二元) a+=b a=a+b
減法 + 賦值(二元) a-=b a=a-b
乘法 + 賦值(二元) a*=b a=a*b
除法 + 賦值(二元) a/=b a=a/b
取模 + 賦值(二元) a%=b a=a%b
位元 AND + 賦值(二元) a&=b a=a&b
位元 OR + 賦值(二元) `a =b` 同`a=a b`
位元 XOR + 賦值(二元) a^=b a=a^b
位元左移 + 賦值(二元) a<<=b a=a<<b
位元右移 + 賦值(二元) a>>=b a=a>>b

比較運算子

名稱 語法 備註
小於(二元) a<b
小於等於(二元) a<=b
大於(二元) a>b
大於等於(二元) a>=b
等於(二元) a==b
不等於(二元) a!=b

邏輯運算子

名稱 語法 備註
邏輯 AND(二元) condition1 && condition2
邏輯 OR(二元) `condition1 condition2`
邏輯 非(一元) !condition1

逗號運算子

名稱 語法 備註
逗號運算子(二元) a,b 丟棄左值,回傳右邊的值

條件運算子

名稱 語法 備註
條件運算子(三元) a?b:c 相當於 if(a){b}else{c}

優先順序

說明

  1. 優先級越高(數字越小),會越先執行。
  2. 如果兩個運算子優先級相同,依照結合性的方向執行。
  3. 多載性只標註否的運算子,未標記的運算子都是可多載的。
名稱 語法 備註 多載性 結合性
優先級 1
:: 作用域解析(C++ 專有)
優先級 2 左到右
後綴遞增(一元) a++ 回傳值後再遞增
後綴遞減(一元) a-- 回傳值後再遞減
() 函示呼叫
[] 陣列存取
a.b 以物件方式存取成員
a->b 以指標方式存取成員
dynamic_cast 執行時檢查類型轉換(C++ 專有)
static_cast 未經檢查的類型轉換(C++ 專有)
reinterpret_cast 重定義類型轉換(C++ 專有)
const_cast 更改非常數屬性(C++ 專有)
typeid 取得類型資訊(C++ 專有)
優先級 3 右至左
前綴遞增(一元) ++a 先遞增再回傳值
前綴遞減(一元) --a 先遞增再回傳值
正號(一元) +a
負號(一元) -a
邏輯 非(一元) !condition1
位元 一的補數(一元) ~a
間接 int val=*ptr 透過指標間接操作變數
傳址 int *ptr=&a 取得變數的記憶體位置
sizeof(a) 取變數的記憶體大小
new , new[] 動態記憶體分配(C++ 專有)
delete , delete[] 動態記憶體釋放(C++ 專有)
優先級 4 左到右
.* 成員物件選擇(C++ 專有)
->* 成員指標選擇(C++ 專有)
優先級 5 左到右
乘法(二元) a*b
除法(二元) a/b
模數(二元) a%b 取餘數
優先級 6 左到右
加法(二元) a+b
減法(二元) a-b
優先級 7 左到右
位元左移(二元) a<<b
位元右移(二元) a>>b
優先級 8 左到右
小於(二元) a<b
小於等於(二元) a<=b
大於(二元) a>b
大於等於(二元) a>=b
優先級 9 左到右
等於(二元) a==b
不等於(二元) a!=b
優先級 10 左到右
位元 AND(一元) a&b
優先級 11 左到右
位元 XOR(一元) a^b
優先級 12 左到右
位元 OR(一元) `a b`
優先級 13 左到右
邏輯 AND(二元) condition1 && condition2
優先級 14 左到右
邏輯 OR(二元) `condition1 condition2`
優先級 15 右至左
條件運算子(三元) a?b:c 相當於 if(a){b}else{c}
優先級 16 右至左
加法 + 賦值(二元) a+=b a=a+b
減法 + 賦值(二元) a-=b a=a-b
乘法 + 賦值(二元) a*=b a=a*b
除法 + 賦值(二元) a/=b a=a/b
取模 + 賦值(二元) a%=b a=a%b
位元 AND + 賦值(二元) a&=b a=a&b
位元 OR + 賦值(二元) `a =b` 同`a=a b`
位元 XOR + 賦值(二元) a^=b a=a^b
位元左移 + 賦值(二元) a<<=b a=a<<b
位元右移 + 賦值(二元) a>>=b a=a>>b
優先級 17 右至左
丟擲異常 throw
優先級 18 左到右
逗號運算子(二元) a,b 丟棄左值