c
語言運算子優先順序
詳細列表
運算子的優先順序:c語言中,運算子的運算優先順序共分為15級。1 級最高,15級最低。在表示式中,優先順序較高的先於優先順序較低的進行運算。而在乙個運算量兩側的運算子優先順序相同時,則按運算子的結合性所規定的結合方向處理。
運算子的結合性:c語言中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算子的結合性是自左至右,即先左後右。如有表示式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。最典型的右結合性運算子是賦值運算子。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。c語言運算子中有不少為右結合性,應注意區別,以避免理解錯誤。
優先順序
運算子
名稱或含義
使用形式
結合方向 說明
1 陣列下標
陣列名[常量表示式]
左到右 ()
圓括號(表示式)
/函式名
(形參表)
.成員選擇(物件) 物件
.成員名
->
成員選擇(指標)
物件指標
->
成員名 2
-負號運算子 -
表示式
右到左
單目運算子 (
型別)強制型別轉換 (
資料型別
)表示式
++ 自增運算子 ++
變數名/
變數名++
單目運算子 --
自減運算子 --
變數名/
變數名--
單目運算子 *
取值運算子 *
指標變數
單目運算子 &
取位址運算子 &
變數名
單目運算子 !
邏輯非運算子 !
表示式
單目運算子 ~
按位取反運算子 ~
表示式
單目運算子
sizeof
長度運算子
sizeof(
表示式)
3 /
除 表示式/
表示式
左到右
雙目運算子 *
乘表示式
*表示式
雙目運算子 %
餘數(取模)
整型表示式
/整型表示式
雙目運算子 4
+ 加表示式
+表示式
左到右雙目運算子 -
減表示式
-表示式
雙目運算子 5
<< 左移
變數<<
表示式
左到右
雙目運算子
>> 右移
變數>>
表示式
雙目運算子 6
> 大於
表示式>
表示式
左到右
雙目運算子
>=
大於等於
表示式>=
表示式
雙目運算子
< 小於
表示式<
表示式
雙目運算子
<=
小於等於
表示式<=
表示式
雙目運算子 7
== 等於
表示式==表示式
左到右雙目運算子 !=
不等於表示式
!=表示式
雙目運算子 8
&按位與
表示式&表示式
左到右雙目運算子 9
^按位異或
表示式^表示式
左到右雙目運算子 10
|按位或
表示式|表示式
左到右雙目運算子 11
&&邏輯與
表示式&&表示式
左到右雙目運算子 12
||邏輯或
表示式||表示式
左到右雙目運算子 13
?:條件運算子
表示式1?表示式
2:表示式3
右到左
三目運算子 14
=賦值運算子 變數
=表示式
右到左
/= 除后賦值 變數
/=表示式
*= 乘後賦值 變數
*=表示式
%= 取模後賦值 變數
%=表示式
+= 加後賦值 變數
+=表示式
-= 減後賦值 變數
-=表示式
<<=
左移後賦值 變數
<<=
表示式
>>=
右移後賦值 變數
>>=
表示式 &=
按位與後賦值 變數
&=表示式
^= 按位異或後賦值 變數
^=表示式
|= 按位或後賦值 變數
|=表示式
15 ,
逗號運算子
表示式,表示式,…
左到右從左向右順序運算
說明:
同一優先順序的運算子,運算次序由結合方向所決定。
簡單記就是:!
>
算術運算子
>
關係運算子
> && > || >
賦值運算子
運算子優先順序表
結合律 運算子 功能 使用形式左 全域性作用域 name左 類作用域 class name左 命名空間作用域 namespace name左.成員選擇 object.name 左 成員選擇 pointer member左 下標expr expr 左 函式呼叫 name expr list 左 型別構...
運算子優先順序表
題目 如果x大於0並小於65536,用移位法計算x乘以255的值?答案是 x 8 x 做題時發現對於運算子優先順序還是沒有概念,於是找來優先順序表和口訣幫助記憶。優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件...
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...