運算子優先順序
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合順序計算。大多數運算是從左至右計算,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。
基本的優先順序需要記住:
指標最優,單目運算優於雙目運算。如正負號。
先乘除(模),後加減。
先算術運算,後移位運算,最後位運算。
請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7.
邏輯運算最後計算。
優先順序
運算子
名稱或含義
使用形式
結合方向
說明
1
後置++
後置自增運算子
變數名++
左到右
後置–後置自減運算子
變數名–
[ ]
陣列下標
陣列名[整型表示式]
( )
圓括號
(表示式)/函式名(形參表)
.
成員選擇(物件)
物件.成員名
->
成員選擇(指標)
物件指標->成員名
2
-
負號運算子
-表示式
右到左
單目運算子
(型別)
強制型別轉換
(資料型別)表示式
前置++
前置自增運算子
++變數名
單目運算子
前置–
前置自減運算子
–變數名
單目運算子
*
取值運算子
*指標表示式
單目運算子
&
取位址運算子
&左值表示式
單目運算子
!
邏輯非運算子
!表示式
單目運算子
~
按位取反運算子
~表示式
單目運算子
sizeof
長度運算子
sizeof 表示式/sizeof(型別)
3
/
除
表示式/表示式
左到右
雙目運算子
*
乘
表示式*表示式
雙目運算子
%
餘數(取模)
整型表示式%整型表示式
雙目運算子
4
+
加
表示式+表示式
左到右
雙目運算子
-
減
表示式-表示式
雙目運算子
5
<<
左移
表示式《表示式
左到右
雙目運算子
>>
右移
表示式》表示式
雙目運算子
6
>
大於
表示式》表示式
左到右
雙目運算子
>=
大於等於
表示式》=表示式
雙目運算子
<
小於
表示式《表示式
雙目運算子
<=
小於等於
表示式<=表示式
雙目運算子
7
==
等於
表示式==表示式
左到右
雙目運算子
!=
不等於
表示式!= 表示式
雙目運算子
8
&
按位與
整型表示式&整型表示式
左到右
雙目運算子
9
^
按位異或
整型表示式^整型表示式
左到右
雙目運算子
10
|
按位或
整型表示式|整型表示式
左到右
雙目運算子
11
&&
邏輯與
表示式&&表示式
左到右
雙目運算子
12
||
邏輯或
表示式||表示式
左到右
雙目運算子
13
?:
條件運算子
表示式1? 表示式2: 表示式3
右到左
三目運算子
14
=
賦值運算子
變數=表示式
右到左
/=
除后賦值
變數/=表示式
*=
乘後賦值
變數*=表示式
%=
取模後賦值
變數%=表示式
+=
加後賦值
變數+=表示式
-=
減後賦值
變數-=表示式
<<=
左移後賦值
變數<<=表示式
>>=
右移後賦值
變數》=表示式
&=
按位與後賦值
變數&=表示式
^=
按位異或後賦值
變數^=表示式
|=
按位或後賦值
變數|=表示式
15
,
逗號運算子
表示式,表示式,…
左到右
從左向右順序運算
例子:
#include
using
namespace
std;
int main()
結果:
說明:
cout的運算是從右向左進行的,但最後輸出還是從左到右。所以,cout << p++ << (p++) << (p)++ << ++p << *(++p) <
依次++(p),++*p,(++p),++p,(*p)++,(p++), *p++ ,最後再反著輸出。
1.++*p:p指向s[0],並把s[0]加1做為表示式的值,所以輸出為1,此時s[0]==』1』
2.++(*p):p還指向s[0](s[0]現在的值為1),並把s[0]加1做為表示式的值,所以輸出為2,此時s[0]==』2』
3.*(++p):p指向s[1],然後取s[1]的值作為表示式的值,輸出』1』
4.*++p :p指向s[2],然後取s[2]的值作為表示式的值,輸出』2』
5.(*p)++:p還是指向s[2],取s[2]的值作為表示式的值,所以輸出』2』,然後s[2]的值加1,s[2]==3
6.*(p++):p還是指向s[2](現值為3),取s[2]的值作為表示式的值,所以輸出』3』,然後p指向s[3]
7.*p++ :p指向s[3],取s[3]的值作為表示式的值,所以輸出』3』,然後p指向s[4];
最後反著輸出為3322121
此陣列s的值為」213345678」.所以後面的輸出就是這些值了。
C 運算優先順序
precedence operator description example associativity1 grouping operator array access member access from a pointer member access from an object scopin...
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
C語言運算優先順序
圓方括號 箭頭一句號,自增自減非反負 針強位址長度,乘除,加減,再移位,小等大等 等等不等,八位與,七位異,六位或,五與,四或,三疑,二賦,一真逗。其中 號為乙個等級分段。1級 左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子。2級 右結合 邏輯非運算子 按位取反運算子 字首增量運...