Share via


運算子優先順序和順序關聯性

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

擲回運算式

由右至左

 

 

 

,

逗號

由左至右

請參閱

參考

C + + 運算子

運算子多載