運算子優先順序和順序關聯性
C + + 語言包含了所有的 c 運算子,並將數個新的運算子。運算子會指定要執行下列其中一項來評估:
有一個運算元 (一元 (unary) 運算子)
兩個運算元 (二元運算子)
三個運算元 (三元運算子)
運算子遵照嚴格的優先順序,會定義包含這些運算子的運算式的評估順序。運算子關聯的運算式,其左邊或右邊 ; 而在運算式 這就稱為 「 順序關聯性 」。 下表顯示的優先順序和順序關聯性的 C++ 運算子 (從最高優先順序到最低優先順序)。在同一個資料表的區段中的運算子具有相同的優先順序,以及除非明確地以括號強制,在運算式中指定的順序進行評估。
C + + 運算子優先順序和順序關聯性
運算子 |
名稱或意義 |
順序關聯性 |
---|---|---|
:: |
範圍解析 |
None |
|
|
|
. |
成員選取項目 (物件) |
由左至右 |
–> |
成員選取 (指標) |
由左至右 |
[ ] |
陣列註標 |
由左至右 |
( ) |
函式呼叫成員初始設定 |
由左至右 |
++ |
後置增量 |
由左至右 |
–– |
後置減量 |
由左至右 |
typeid( ) |
型別名稱 |
由左至右 |
const_cast |
型別轉換 (轉換) |
由左至右 |
dynamic_cast |
型別轉換 (轉換) |
由左至右 |
reinterpret_cast |
型別轉換 (轉換) |
由左至右 |
static_cast |
型別轉換 (轉換) |
由左至右 |
|
|
|
sizeof |
物件或型別大小 |
由右至左 |
++ |
前置增量 |
由右至左 |
–– |
前置減量 |
由右至左 |
~ |
補數 |
由右至左 |
! |
邏輯 not |
由右至左 |
– |
一元減號 |
由右至左 |
+ |
一元 (unary) 加上 |
由右至左 |
& |
傳址 |
由右至左 |
* |
間接 |
由右至左 |
new |
建立物件 |
由右至左 |
delete |
終結物件 |
由右至左 |
( ) |
Cast |
由右至左 |
|
|
|
.* |
指標成員 (物件) |
由左至右 |
–>* |
指標成員 (指標) |
由左至右 |
|
|
|
* |
乘法 |
由左至右 |
/ |
除法 |
由左至右 |
% |
模數 |
由左至右 |
|
|
|
+ |
加入 |
由左至右 |
– |
減法 |
由左至右 |
|
|
|
<< |
左移 |
由左至右 |
>> |
右移 |
由左至右 |
|
|
|
< |
小於 |
由左至右 |
> |
大於 |
由左至右 |
<= |
小於或等於 |
由左至右 |
>= |
大於或等於 |
由左至右 |
|
|
|
== |
相等 |
由左至右 |
!= |
不等於 |
由左至右 |
|
|
|
& |
位元 AND |
由左至右 |
|
|
|
^ |
位元互斥 OR |
由左至右 |
|
|
|
| |
位元非互斥 OR |
由左至右 |
|
|
|
&& |
邏輯 AND |
由左至右 |
|
|
|
|| |
邏輯 OR |
由左至右 |
|
|
|
expr1 ? expr2 : expr3 |
條件式 |
由右至左 |
|
|
|
= |
指派 |
由右至左 |
*= |
乘法設定 |
由右至左 |
/= |
除法指派 |
由右至左 |
%= |
模數設定 |
由右至左 |
+= |
加法設定 |
由右至左 |
–= |
減法指派 |
由右至左 |
<<= |
左移設定 |
由右至左 |
>>= |
向右移位作業 |
由右至左 |
&= |
位元運算 AND 作業 |
由右至左 |
|= |
位元 (含) 或工作分派 |
由右至左 |
^= |
位元獨占 OR 指派 |
由右至左 |
|
|
|
throw expr |
擲回運算式 |
由右至左 |
|
|
|
, |
逗號 |
由左至右 |