c++ 語言包括所有 c 運算子並新增多個新的運算子。
運算子指定對下列項之一執行計算:
運算子遵循嚴格的優先順序,該優先順序定義了包含這些運算子的表示式的計算順序。
運算子與其左側或右側的表示式關聯;這稱為「關聯性」。下表顯示 c++ 運算子的優先順序和關聯性(從最高優先順序到最低優先順序)。
表的同一段中的運算子具有相同的優先順序,這些運算子在表示式中按給定順序進行計算(除非括號明確強制執行計算)。
c++ 運算子的優先順序和關聯性
運算子名稱或含義
結合性 ::
範圍解析 無
. 成員選定內容(物件)
從左到右
–>
成員選定內容(指標)
從左到右
[ ]陣列下標
從左到右
( )函式呼叫成員初始化
從左到右 ++
字尾遞增
從左到右 ––
字尾遞減
從左到右
typeid( )
型別名稱
從左到右
const_cast
型別轉換**換)
從左到右
dynamic_cast
型別轉換**換)
從左到右
reinterpret_cast
型別轉換**換)
從左到右
static_cast
型別轉換**換)
從左到右
sizeof
物件或型別的大小
從右到左 ++
字首遞增
從右到左 ––
字首遞減
從右到左 ~
二進位制反碼
從右到左 !
邏輯「非」
從右到左 –
一元負從右到左 +
一元加從右到左 &
address-of
從右到左 *
間接定址
從右到左
new建立物件
從右到左
delete
銷毀物件
從右到左
( )cast
從右到左
.* 指向成員的指標(物件)
從左到右
–>*
指向成員的指標(指標)
從左到右
* 乘法
從左到右 /
除法從左到右 %
取模從左到右
+ 新增
從左到右 –
減法從左到右
<< 左移
從左到右
>> 右移
從左到右
< 小於
從左到右
> 大於
從左到右
<=
小於或等於
從左到右
>=
大於或等於
從左到右
== 相等
從左到右 !=
不相等從左到右
& 按位「與」
從左到右
^ 按位「異或」
從左到右
| 按位「與或」
從左到右
&& 邏輯「與」
從左到右
|| 邏輯「或」
從左到右
expr1
? expr2
: expr3
條件運算
從右到左
= 賦值
從右到左 *=
乘法賦值
從右到左 /=
除法賦值
從右到左 %=
取模賦值
從右到左 +=
加法賦值
從右到左 –=
減法賦值
從右到左
<<=
左移賦值
從右到左
>>=
右移賦值
從右到左 &=
按位「與」賦值
從右到左 |=
按位「與或」賦值
從右到左 ^=
按位「異或」賦值
從右到左
throw
expr
引發表示式
從右到左
, 逗號
從左到右
運算子優先順序和結合性
所謂優先順序就是當乙個表示式中有多個運算子時,先計算誰,後計算誰。這個其實我們在小學學算術的時候就學過,如1 4 2。但是c語言中的運算子已經遠不止四則運算中的加減乘除了,還有其他很多運算子。當它們出現在同乙個表示式中時先計算誰後計算誰呢?所以本節還是有必要講一下的。最後我還會將所有運算子展示出來,...
運算子優先順序和結合性
優先順序 運算子含義 運算物件個數 結合順序1 初等運算子 自左至右 下標運算子 指向結構體成員運算子 結構體成員運算子2!單目運算子 1 單目運算子 自右至左 負號 指標運算子 sizeof 型別 型別轉換運算子3 乘法算數運算子 2 雙目運算子 自左至右 4 2 雙目運算子 自左至右 5 2 雙...
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...