C#中38個(gè)常用運(yùn)算符的優(yōu)先級(jí)的劃分和理解
更新時(shí)間:2012年08月01日 16:34:07 作者:
這只我自己在學(xué)C#中的一些總結(jié),其中對(duì)于各級(jí)的劃分方式、各操作符的優(yōu)先級(jí)的理解并不見(jiàn)得正確,只是自己的看法,拿出來(lái)與大家分享
在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ù)類(lèi)型和它的運(yùn)算數(shù)的數(shù)據(jù)類(lèi)型不同,所以它們沒(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í)順序就可以寫(xiě)成如下了:(無(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)與大家分享。
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ù)類(lèi)型和它的運(yùn)算數(shù)的數(shù)據(jù)類(lèi)型不同,所以它們沒(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í)順序就可以寫(xiě)成如下了:(無(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)與大家分享。
相關(guān)文章
WindowsForm實(shí)現(xiàn)警告消息框的實(shí)例代碼
這篇文章主要介紹了WindowsForm如何實(shí)現(xiàn)警告消息框,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
WPF仿Tabcontrol實(shí)現(xiàn)切換多個(gè)不同View
這篇文章主要為大家詳細(xì)介紹了WPF如何模仿Tabcontrol實(shí)現(xiàn)切換多個(gè)不同View,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
WPF利用DrawingContext實(shí)現(xiàn)繪制溫度計(jì)
這篇文章主要為大家詳細(xì)介紹了如何利用WPF和DrawingContext實(shí)現(xiàn)繪制溫度計(jì),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2022-09-09
如何應(yīng)用C#實(shí)現(xiàn)UDP的分包組包
本篇文章小編將為大家介紹,如何應(yīng)用C#實(shí)現(xiàn)UDP的分包組包。需要的朋友參考下2013-04-04

