C 中38個常用的運算子優先順序的劃分和理解

2021-07-24 21:18:08 字數 1271 閱讀 4210

在c#中,一共有38個常用的運算子,根據它們所執行運算的特點和它們的優先順序,為了便於記憶,我將它們歸為七個等級:1、單元運算子和括號。2、常規算術運算子。3、位移運算子。4、比較運算子。5、邏輯運算子。6、各種賦值運算子。7、右位(字尾)單元運算子。

1、在這一級中,有++、--(做為字首)、()、+、-(做為單元運算子)、!、~。這一級中都是單元運算子,除了其中那一對特殊的具有改變任何運算優先順序的括號。這此可以看出,在定義表示式中,那些單元運算子的優先順序是很高的,可能是因為它們都直接作用於運算元吧。只有兩個單元運算子的優先順序不在第一級中,它們因為特殊的原因出現在了後面。

2、在常規算術運算子中,有我們經常使用的*、/、%、+、-,因為他們使用得較多,所以也排在較高的位置。

3、這一級是兩個特殊的位操作符,<< 和 >>,它們是所有二元操作符中除常規運算子外優先順序最高的了,可能是因為與比較運算子、邏輯運算子比起來,這一組操作符進行的還是數值的計算。

4、比較運算子,包括<、>、<=、>=、==、!=,一共六個,這裡有乙個特點,就小於優先於大於。

5、邏輯運算子,邏輯運算子原本有四種,但用於單元的「非」運算子排在了前面,所以這裡面就只有&、^、|,再加上兩個補充的用於提高**效率的運算子&&、||,共有五個。

6、賦值運算子,這一級最多,幾乎前面出現過的二元運算子,在這裡加上個「=」號就成為乙個賦值運算子。首先當然最基本的賦值運算子「=」;然後是常規算術運算子演變來的「*=、/=、%=、+=、-=」,它們的順序和常規算術符的順序一樣;然後是位移運算子和邏輯運算子,也按它們演變前的順序排列,為「<<=、>>=、&=、^=、|=」。因為比較運算子所產生的結果的資料型別和它的運算數的資料型別不同,所以它們沒有相應的賦值運算子。

7、最後一級,就是那兩個最後的單元運算子字尾版的++、--。它們的出現就是為了做為那兩個字首版的==、--的補充(那兩個的優先順序太高了,人們需要兩個優先順序不那麼高的),以方便設計表示式,所以這兩個的優先順序當然要排在最後了。

那麼,這38個操作符的優先順序順序就可以寫成如下了:(無論是橫向還是豎向,越靠前優先順序越高)

第一級:++、--(做為字首)、()、+、-(做為單元運算子時)、!、~。

第二級:*、/、%、+、-。

第**:<<、>>。

第四級:<、>、<=、>=、==、!=。

第五級:&、^、|、&&、||。

第六級:=、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|=。

第七級:++、--(做為字尾)。

這只我自己在學c#中的一些總結,其中對於各級的劃分方式、各操作符的優先順序的理解並不見得正確,只是自己的看法,拿出來與大家分享。

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

C 中38個常用運算子的優先順序的劃分和理解

在c 中,一共有38個常用的運用符,根據它們所執行運算的特點和它們的優先順序,為了便於記憶,我將它們歸為七個等級 1 單元運算子和括號。2 常規算術運算子。3 位移運算子。4 比較運算子。5 邏輯運算子。6 各種賦值運算子。7 右位 字尾 單元運算子。1 在這一級中,有 做為字首 做為單元運算子 這...

C 中的運算子優先順序

運算子的優先順序確定表示式中項的組合。這會影響到乙個表示式如何計算。某些運算子比其他運算子有更高的優先順序,例如,乘除運算子具有比加減運算子更高的優先順序。例如 x 7 3 2,在這裡,x 被賦值為 13,而不是 20,因為運算子 具有比 更高的優先順序,所以首先計算乘法 3 2,然後再加上 7。下...