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