參考文章:
c語言運算子優先順序
優先順序
運算子
名稱或含義
使用形式
結合方向
說明
1
陣列下標
陣列名[常量表示式]
左到右--
()
圓括號(表示式)/函式名(形參表)
--.
成員選擇(物件)
物件.成員名
--->
成員選擇(指標)
物件指標->成員名
--2
-
負號運算子
-表示式
右到左
單目運算子
~
按位取反運算子
~表示式
++
自增運算子
++變數名/變數名++
--
自減運算子
--變數名/變數名--
*
取值運算子
*指標變數
&
取位址運算子
&變數名
!
邏輯非運算子
!表示式
(
型別)強制型別轉換
(資料型別)表示式
--sizeof
長度運算子
sizeof(表示式)
--3
/
除表示式/表示式
左到右雙目運算子
*
乘表示式*表示式
%
餘數(取模)
整型表示式%整型表示式
4
+
加表示式+表示式
左到右雙目運算子
-
減表示式-表示式
5
<
左移變數《表示式
左到右雙目運算子
>>
右移變數》表示式
6
>
大於表示式》表示式
左到右雙目運算子
>=
大於等於
表示式》=表示式
小於表示式《表示式
<=
小於等於
表示式<=表示式
7
==
等於表示式==表示式
左到右雙目運算子
!
=不等於表示式!= 表示式
8
&
按位與表示式&表示式
左到右雙目運算子
9
^
按位異或
表示式^表示式
左到右雙目運算子
10
|
按位或表示式|表示式
左到右雙目運算子
11
&&
邏輯與表示式&&表示式
左到右雙目運算子
12
||
邏輯或表示式||表示式
左到右雙目運算子
13
?:
條件運算子
表示式1?
表示式2: 表示式3
右到左
三目運算子
14
=
賦值運算子
變數=表示式
右到左
--/=
除后賦值
變數/=表示式
--*=
乘後賦值
變數*=表示式
--%=
取模後賦值
變數%=表示式
--+=
加後賦值
變數+=表示式
---=
減後賦值
變數-=表示式
--<<=
左移後賦值
變數<<=表示式
-->>=
右移後賦值
變數》=表示式
--&=
按位與後賦值
變數&=表示式
--^=
按位異或後賦值
變數^=表示式
--|=
按位或後賦值
變數|=表示式
--15
,
逗號運算子
表示式,表示式,…
左到右--
注:同一優先順序的運算子,運算次序由結合方向所決定。
例如:
#include#includeusing namespace std;
int main()
; auto pv=v.begin();
int i=0;
while(pv!=v.end())
return 0;
}
輸出結果如下:
}輸出結果為:
解析:*pv++、++*pv中,*與++都在同乙個優先順序中,由於是右結合性,
因此:*pv++等價於*(pv++),又由於是後置加加,因此是加加後並沒有增加暫存器中的pv值,所以第一次輸出值為11。詳見:關於++i與i++的總結
++*pv等價於++(*pv),pv的值一直沒變,而且又是前置加加,暫存器中的值也被加加了(即*pv==11,11+1=12),因此第一次輸出值為12,且會一直迴圈下去(例項中用i控制住了迴圈次數)。
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...
運算子優先順序 PHP運算子優先順序
php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...