在C#中,一共有38個常用的運用符,根據(jù)它們所執(zhí)行運算的特點和它們的優(yōu)先級,為了便于記憶,我將它們歸為七個等級:1、單元運算符和括號。2、常規(guī)算術(shù)運算符。3、位移運算符。4、比較運算符。5、邏輯運算符。6、各種賦值運算符。7、右位(后綴)單元運算符。
1、在這一級中,有++、--(做為前綴)、()、+、-(做為單元運算符)、!、~。這一級中都是單元運算符,除了其中那一對特殊的具有改變?nèi)魏芜\算優(yōu)先級的括號。這此可以看出,在定義表達式中,那些單元運算符的優(yōu)先級是很高的,可能是因為它們都直接作用于操作數(shù)吧。只有兩個單元運算符的優(yōu)先級不在第一級中,它們因為特殊的原因出現(xiàn)在了后面。 2、在常規(guī)算術(shù)運算符中,有我們經(jīng)常使用的*、/、%、+、-,因為他們使用得較多,所以也排在較高的位置。 3、這一級是兩個特殊的位操作符,<< 和 >>,它們是所有二元操作符中除常規(guī)運算符外優(yōu)先級最高的了,可能是因為與比較運算符、邏輯運算符比起來,這一組操作符進行的還是數(shù)值的計算。 4、比較運算符,包括<、>、<=、>=、==、!=,一共六個,這里有一個特點,就小于優(yōu)先于大于。 5、邏輯運算符,邏輯運算符原本有四種,但用于單元的“非”運算符排在了前面,所以這里面就只有&、^、|,再加上兩個補充的用于提高代碼效率的運算符&&、||,共有五個。 6、賦值運算符,這一級最多,幾乎前面出現(xiàn)過的二元運算符,在這里加上個“=”號就成為一個賦值運算符。首先當(dāng)然最基本的賦值運算符“=”;然后是常規(guī)算術(shù)運算符演變來的“*=、/=、%=、+=、-=”,它們的順序和常規(guī)算術(shù)符的順序一樣;然后是位移運算符和邏輯運算符,也按它們演變前的順序排列,為“<<=、>>=、&=、^=、|=”。因為比較運算符所產(chǎn)生的結(jié)果的數(shù)據(jù)類型和它的運算數(shù)的數(shù)據(jù)類型不同,所以它們沒有相應(yīng)的賦值運算符。 7、最后一級,就是那兩個最后的單元運算符后綴版的++、--。它們的出現(xiàn)就是為了做為那兩個前綴版的==、--的補充(那兩個的優(yōu)先級太高了,人們需要兩個優(yōu)先級不那么高的),以方便設(shè)計表達式,所以這兩個的優(yōu)先級當(dāng)然要排在最后了。
那么,這38個操作符的優(yōu)先級順序就可以寫成如下了:(無論是橫向還是豎向,越靠前優(yōu)先級越高) 第一級:++、--(做為前綴)、()、+、-(做為單元運算符時)、!、~。 第二級:*、/、%、+、-。 第三級:<<、>>。 第四級:<、>、<=、>=、==、!=。 第五級:&、^、|、&&、||。 第六級:=、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|=。 第七級:++、--(做為后綴)。
這只我自己在學(xué)C#中的一些總結(jié),其中對于各級的劃分方式、各操作符的優(yōu)先級的理解并不見得正確,只是自己的看法,拿出來與大家分享。
|