c#運算子優先順序,是描述在計算機運算計算表示式時執行運算的先後順序。 先執行具有較高優先順序的運算,然後執行較低優先順序的運算。 例如,我們常說的先執行相乘和除,再執行加減運算。
優先順序運算子
名稱或含義
使用形式
結合方向說明1
陣列下標
陣列名[整型表示式]
左到右()
圓括號(表示式)/函式名(形參表)
.成員選擇(物件)
物件.成員名
->
成員選擇(指標)
物件指標->成員名2-
負號運算子
-表示式
右到左單目運算子
(型別)
強制型別轉換
(資料型別)表示式
++自增運算子
++變數名/變數名++
單目運算子
--自減運算子
--變數名/變數名--
單目運算子
*取值運算子
*指標表示式
單目運算子
&取位址運算子
&左值表示式
單目運算子
!邏輯非運算子
!表示式
單目運算子
~按位取反運算子
~表示式
單目運算子
sizeof
長度運算子
sizeof表示式/sizeof(型別)3/
除表示式/表示式
左到右雙目運算子*乘
表示式*表示式
雙目運算子
%餘數(取模)
整型表示式%整型表示式
雙目運算子4+
加表示式+表示式
左到右雙目運算子-減
表示式-表示式
雙目運算子
5<<
左移表示式《表示式
左到右雙目運算子
>>
右移表示式》表示式
雙目運算子
6>
大於表示式》表示式
左到右雙目運算子
>=
大於等於
表示式》=表示式
雙目運算子
<
小於表示式《表示式
雙目運算子
<=
小於等於
表示式<=表示式
雙目運算子7==
等於表示式==表示式
左到右雙目運算子
!=不等於
表示式!=表示式
雙目運算子8&
按位與整型表示式&整型表示式
左到右雙目運算子9^
按位異或
整型表示式^整型表示式
左到右雙目運算子10|
按位或整型表示式|整型表示式
左到右雙目運算子
11&&
邏輯與表示式&&表示式
左到右雙目運算子
12||
邏輯或表示式||表示式
左到右雙目運算子
13?:
條件運算子
表示式1?表示式2:表示式3
右到左三目運算子14=
賦值運算子
變數=表示式
右到左/=
除后賦值
變數/=表示式
*=乘後賦值
變數*=表示式
%=取模後賦值
變數%=表示式
+=加後賦值
變數+=表示式
-=減後賦值
變數-=表示式
<<=
左移後賦值
變數<<=表示式
>>=
右移後賦值
變數》=表示式
&=按位與後賦值
變數&=表示式
^=按位異或後賦值
變數^=表示式
|=按位或後賦值
變數|=表示式15,
逗號運算子
表示式,表示式,…
左到右從左向右順序運算
在學c#中的一些總結,其中對於各級的劃分方式、各操作符的優先順序的理解並不見得正確,只是自己的看法,拿出來與大家分享。
在c#中,一共有38個常用的運用符,根據它們所執行運算的特點和它們的優先順序,為了便於記憶,我將它們歸為七個等級:
單元運算子和括號。
常規算術運算子。
位移運算子。
比較運算子。
邏輯運算子。
各種賦值運算子。
右位(字尾)單元運算子。
在這一級中,有++、--(做為字首)、()、+、-(做為單元運算子)、!、~。這一級中都是單元運算子,除了其中那一對特殊的具有改變任何運算優先順序的括號。這此可以看出,在定義表示式中,那些單元運算子的優先順序是很高的,可能是因為它們都直接作用於運算元吧。只有兩個單元運算子的優先順序不在第一級中,它們因為特殊的原因出現在了後面。
在常規算術運算子中,有我們經常使用的*、/、%、+、-,因為他們使用得較多,所以也排在較高的位置。
這一級是兩個特殊的位操作符,<< 和 >>,它們是所有二元操作符中除常規運算子外優先順序最高的了,可能是因為與比較運算子、邏輯運算子比起來,這一組操作符進行的還是數值的計算。
比較運算子,包括<、>、<=、>=、==、!=,一共六個,這裡有乙個特點,就小於優先於大於。
邏輯運算子,邏輯運算子原本有四種,但用於單元的「非」運算子排在了前面,所以這裡面就只有&、^、|,再加上兩個補充的用於提高**效率的運算子&&、||等共有五個。
賦值運算子,這一級最多,幾乎前面出現過的二元運算子,在這裡加上個「=」號就成為乙個賦值運算子。首先當然最基本的賦值運算子「=」;然後是常規算術運算子演變來的「*=、/=、%=、+=、-=」,它們的順序和常規算術符的順序一樣;然後是位移運算子和邏輯運算子,也按它們演變前的順序排列,為「<<=、>>=、&=、^=、|=」。因為比較運算子所產生的結果的資料型別和它的運算數的資料型別不同,所以它們沒有相應的賦值運算子。
最後一級,就是那兩個最後的單元運算子字尾版的++、--。它們的出現就是為了做為那兩個字首版的==、--的補充(那兩個的優先順序太高了,人們需要兩個優先順序不那麼高的),以方便設計表示式,所以這兩個的優先順序當然要排在最後了。
無論是從上而下,還是從左到右,都是越上和越前面,優先順序越高。
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
C語言運算子優先順序《轉》
優先順序 運算子名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...