優先順序
運算子名稱或含義
使用形式
結合方向
說明 1
陣列下標
陣列名[常量表示式]
左到右–
()圓括號
(表示式)/函式名(形參表)– .
成員選擇(物件)
物件.成員名
– ->
成員選擇(指標)
物件指標->成員名– 2
-負號運算子
-表示式
右到左單目運算子
~按位取反運算子
~表示式
++自增運算子
++變數名/變數名++
–自減運算子
–變數名/變數名–
* 取值運算子
*指標變數
&取位址運算子
&變數名
!邏輯非運算子
!表示式
(型別)
強制型別轉換
(資料型別)表示式
– sizeof
長度運算子
sizeof(表示式)– 3
/除表示式/表示式
左到右雙目運算子 * 乘
表示式*表示式
% 餘數(取模)
整型表示式%整型表示式 4+
加表示式+表示式
左到右雙目運算子 - 減
表示式-表示式
5<<
左移變數《表示式
左到右雙目運算子
>>
右移變數》表示式
6>
大於表示式》表示式
左到右雙目運算子
>=
大於等於
表示式》=表示式
<
小於表示式《表示式
<=
小於等於
表示式<=表示式 7==
等於表示式==表示式
左到右雙目運算子
!=不等於
表示式!= 表示式 8&
按位與表示式&表示式
左到右雙目運算子 9^
按位異或
表示式^表示式
左到右雙目運算子 10|
按位或表示式|表示式
左到右雙目運算子
11&&
邏輯與表示式&&表示式
左到右雙目運算子
12||
邏輯或表示式||表示式
左到右雙目運算子
13?:
條件運算子
表示式1?表示式2: 表示式3
右到左三目運算子 14=
賦值運算子
變數=表示式
右到左–
/=除后賦值
變數/=表示式
*= 乘後賦值
變數*=表示式
%= 取模後賦值
變數%=表示式
+= 加後賦值
變數+=表示式
-= 減後賦值
變數-=表示式
<<=
左移後賦值
變數<<=表示式
>>=
右移後賦值
變數》=表示式
&= 按位與後賦值
變數&=表示式
^= 按位異或後賦值
變數^=表示式
|= 按位或後賦值
變數|=表示式 15,
逗號運算子
表示式,表示式,…
左到右–
程式1
int x=5, y=8, c;
c=x+++y;
cout
<< "c is:"
int x=5, y=8, c;
c=++x+y;
cout
<< "c is:"
c=x+y;
x++;
程式2,同上,考慮++是右結合,先計算(++x),此時x=6,再計算c=x+y。
程式3
int i=3, j=3;
c = i+++(++j);
cout
<< "c is"
int i=3;
c = i+++(++i);
cout
<< "c is"
程式4,與程式3類似,應計算c=i+(++i),接著計算++i,此時i=4,接著計算c=i+i=4+4=8;
運算子結合性
在標準c語言的文件裡,對操作符的結合性並沒有做出非常清楚的解釋。乙個滿分的回答是 它是仲裁者,在幾個操作符具有相同的優先順序時決定先執行哪乙個。每個操作符擁有某一級別的優先順序,同時也擁有左結合性或右結合性。優先順序決定乙個不含括號的表示式中運算元之間的 緊密 程度。例如,在表示式a b c中,乘法...
自增運算子 與 自減運算子
字首形式的 操作符出現在運算元的前面。例如 a 說明 運算元的值被相加,而表示式的值就是運算元增加後的值。舉例 int a,b 1 a b b增加至2,a得到的值為2 字尾形式的 操作符出現在運算元的後面。例如 a 說明 運算元的值仍被相加,而表示式的值是運算元增加前的值。舉例 int a,b 1 ...
運算子和結合性
第一級 結合方向自左向右,只用於陣列,作用 1.定義陣列,先定義後使用 2.通過陣列下標訪問陣列元素。int a 10 int arr 10 自定義資料型別 通過結構體的變數訪問內部成員 struct student struct student stu1 stu1.age 23 結構體的指標變數,...