C#運(yùn)算符優(yōu)先級(jí),是描述在計(jì)算機(jī)運(yùn)算計(jì)算表達(dá)式時(shí)執(zhí)行運(yùn)算的先后順序。 先執(zhí)行具有較高優(yōu)先級(jí)的運(yùn)算,然后執(zhí)行較低優(yōu)先級(jí)的運(yùn)算。 例如,我們常說(shuō)的先執(zhí)行相乘和除,再執(zhí)行加減運(yùn)算。
| 優(yōu)先級(jí) | 運(yùn)算符 | 名稱或含義 | 使用形式 | 結(jié)合方向 | 說(shuō)明 |
|---|---|---|---|---|---|
| 1 | [] | 數(shù)組下標(biāo) | 數(shù)組名[整型表達(dá)式] | 左到右 | |
| () | 圓括號(hào) | (表達(dá)式)/函數(shù)名(形參表) | |||
| . | 成員選擇(對(duì)象) | 對(duì)象.成員名 | |||
| -> | 成員選擇(指針) | 對(duì)象指針->成員名 | |||
| 2 | - | 負(fù)號(hào)運(yùn)算符 | -表達(dá)式 | 右到左 | 單目運(yùn)算符 |
| (類型) | 強(qiáng)制類型轉(zhuǎn)換 | (數(shù)據(jù)類型)表達(dá)式 | |||
| ++ | 自增運(yùn)算符 | ++變量名/變量名++ | 單目運(yùn)算符 | ||
| -- | 自減運(yùn)算符 | --變量名/變量名-- | 單目運(yùn)算符 | ||
| * | 取值運(yùn)算符 | *指針表達(dá)式 | 單目運(yùn)算符 | ||
| & | 取地址運(yùn)算符 | &左值表達(dá)式 | 單目運(yùn)算符 | ||
| ! | 邏輯非運(yùn)算符 | !表達(dá)式 | 單目運(yùn)算符 | ||
| ~ | 按位取反運(yùn)算符 | ~表達(dá)式 | 單目運(yùn)算符 | ||
| sizeof | 長(zhǎng)度運(yùn)算符 | sizeof表達(dá)式/sizeof(類型) | |||
| 3 | / | 除 | 表達(dá)式/表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| * | 乘 | 表達(dá)式*表達(dá)式 | 雙目運(yùn)算符 | ||
| % | 余數(shù)(取模) | 整型表達(dá)式%整型表達(dá)式 | 雙目運(yùn)算符 | ||
| 4 | + | 加 | 表達(dá)式+表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| - | 減 | 表達(dá)式-表達(dá)式 | 雙目運(yùn)算符 | ||
| 5 | << | 左移 | 表達(dá)式<<表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| >> | 右移 | 表達(dá)式>>表達(dá)式 | 雙目運(yùn)算符 | ||
| 6 | > | 大于 | 表達(dá)式>表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| >= | 大于等于 | 表達(dá)式>=表達(dá)式 | 雙目運(yùn)算符 | ||
| < | 小于 | 表達(dá)式<表達(dá)式 | 雙目運(yùn)算符 | ||
| <= | 小于等于 | 表達(dá)式<=表達(dá)式 | 雙目運(yùn)算符 | ||
| 7 | == | 等于 | 表達(dá)式==表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| != | 不等于 | 表達(dá)式!=表達(dá)式 | 雙目運(yùn)算符 | ||
| 8 | & | 按位與 | 整型表達(dá)式&整型表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| 9 | ^ | 按位異或 | 整型表達(dá)式^整型表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| 10 | | | 按位或 | 整型表達(dá)式|整型表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| 11 | && | 邏輯與 | 表達(dá)式&&表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| 12 | || | 邏輯或 | 表達(dá)式||表達(dá)式 | 左到右 | 雙目運(yùn)算符 |
| 13 | ?: | 條件運(yùn)算符 | 表達(dá)式1?表達(dá)式2:表達(dá)式3 | 右到左 | 三目運(yùn)算符 |
| 14 | = | 賦值運(yùn)算符 | 變量=表達(dá)式 | 右到左 | |
| /= | 除后賦值 | 變量/=表達(dá)式 | |||
| *= | 乘后賦值 | 變量*=表達(dá)式 | |||
| %= | 取模后賦值 | 變量%=表達(dá)式 | |||
| += | 加后賦值 | 變量+=表達(dá)式 | |||
| -= | 減后賦值 | 變量-=表達(dá)式 | |||
| <<= | 左移后賦值 | 變量<<=表達(dá)式 | |||
| >>= | 右移后賦值 | 變量>>=表達(dá)式 | |||
| &= | 按位與后賦值 | 變量&=表達(dá)式 | |||
| ^= | 按位異或后賦值 | 變量^=表達(dá)式 | |||
| |= | 按位或后賦值 | 變量|=表達(dá)式 | |||
| 15 | , | 逗號(hào)運(yùn)算符 | 表達(dá)式,表達(dá)式,… | 左到右 | 從左向右順序運(yùn)算 |
在學(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í):
在這一級(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)在了后面。
在常規(guī)算術(shù)運(yùn)算符中,有我們經(jīng)常使用的*、/、%、+、-,因?yàn)樗麄兪褂玫幂^多,所以也排在較高的位置。
這一級(jí)是兩個(gè)特殊的位操作符,<< 和 >>,它們是所有二元操作符中除常規(guī)運(yùn)算符外優(yōu)先級(jí)最高的了,可能是因?yàn)榕c比較運(yùn)算符、邏輯運(yùn)算符比起來(lái),這一組操作符進(jìn)行的還是數(shù)值的計(jì)算。
比較運(yùn)算符,包括<、>、<=、>=、==、!=,一共六個(gè),這里有一個(gè)特點(diǎn),就小于優(yōu)先于大于。
邏輯運(yùn)算符,邏輯運(yùn)算符原本有四種,但用于單元的“非”運(yùn)算符排在了前面,所以這里面就只有&、^、|,再加上兩個(gè)補(bǔ)充的用于提高代碼效率的運(yùn)算符&&、||等共有五個(gè)。
賦值運(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)算符。
最后一級(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)然要排在最后了。
無(wú)論是從上而下,還是從左到右,都是越上和越前面,優(yōu)先級(jí)越高。
第一級(jí):++、--(做為前綴)、()、+、-(做為單元運(yùn)算符時(shí))、!、~。
第二級(jí):*、/、%、+、-。
第三級(jí):<<、>>位移運(yùn)算。
第四級(jí):<、>、<=、>=、==、!=。(邏輯比較)
第五級(jí):&、^、|、&&、||。
第六級(jí):=、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|=。
第七級(jí):++、--(做為后綴)。
更新時(shí)間:2023-09-24 08:11:22
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流①群][收費(fèi)]
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流②群][免費(fèi)]
要求:不能發(fā)廣告、暴力、政治、付費(fèi)教程,違者直接踢出。
備注:入群費(fèi)用5元,沒(méi)有QQ錢包,可以先支付寶 or 微信掃碼支付5元贊助后,我拉您進(jìn)去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長(zhǎng)郵箱:so@sojson.com
對(duì)頁(yè)面內(nèi)容有任何疑問(wèn)和建議,請(qǐng)聯(lián)系我們。
所有贊助/開(kāi)支都講公開(kāi)明細(xì),用于網(wǎng)站維護(hù):贊助名單查看
正在加載... ...