操作符優(yōu)先級(jí)

1、標(biāo)識(shí)符、常量、字符串和用()括號(hào)套起來的表達(dá)式是組成表達(dá)式的最基本單元,在運(yùn)算中做
操作數(shù),優(yōu)先級(jí)最高。
2、后綴運(yùn)算符,包括數(shù)組取下標(biāo)[]、函數(shù)調(diào)用()、結(jié)構(gòu)體取成員.、指向結(jié)構(gòu)體的指針取成員->、后綴自增++、后綴自減--。如果一個(gè)操作數(shù)后面有多個(gè)后綴,按照離操作數(shù)從近到遠(yuǎn)的順序
(也就是從左到右)依次運(yùn)算,比如 a.name++ ,先算 a.name ,再++,這里的 .name 應(yīng)該看成 a 的
一個(gè)后綴,而不是把 . 看成雙目運(yùn)算符。
3、單目運(yùn)算符,包括前綴自增++、前綴自減--、 sizeof 、類型轉(zhuǎn)換()、取地址運(yùn)算&、指針間接尋址、正號(hào)+、負(fù)號(hào)-、按位取反~、邏輯非! 。如果一個(gè)操作數(shù)前面有多個(gè)前綴,按照離操作數(shù)從近到遠(yuǎn)的順序(也就是從右到左)依次運(yùn)算,比如 !~a ,先算 ~a ,再求!。
4、乘
、除/、模%運(yùn)算符。這三個(gè)運(yùn)算符是左結(jié)合的。
5、加+、減-運(yùn)算符。左結(jié)合。
6、移位運(yùn)算符<<和>>。左結(jié)合。
7、關(guān)系運(yùn)算符< > <= >=。左結(jié)合。
8、相等性運(yùn)算符==和!=。左結(jié)合。
9、按位與&。左結(jié)合。
10、按位異或^。左結(jié)合。
11、按位或|。左結(jié)合。
12、邏輯與&&。左結(jié)合。
13、邏輯或||。左結(jié)合。
14、條件運(yùn)算符:?。在第 2 節(jié) “if/else語句”講過Dangling-else問題,條件運(yùn)算符也有類似的問
題。例如 a ? b : c ? d : e 是看成 (a ? b : c) ? d : e 還是 a ? b : (c ? d : e) ?C語言規(guī)
定是后者。
15、賦值=和各種復(fù)合賦值( *= /= %= += -= <<= >>= &= ^= |= )。右結(jié)合。
16、逗號(hào)運(yùn)算符,左結(jié)合。

以下代碼查找和打印0~1024之間所有256的倍數(shù),對(duì)嗎?
int i = 0;
for (; i <= 1024; ++i)
{
if (i & 0xff == 0)
{
printf("%d\n",i);
}
}

不對(duì),因?yàn)?優(yōu)先級(jí)比&高。,所以應(yīng)改成if ((i & 0xff )== 0)
tip:在標(biāo)準(zhǔn)C語言的文檔里,對(duì)操作符的結(jié)合性并沒有做出非常清楚的解釋。一個(gè)滿分的回答是:它是仲裁者,在幾個(gè)操作符具有相同的優(yōu)先級(jí)時(shí)決定先執(zhí)行哪一個(gè)。

int a,b=1,c=2;
a=b=c;

所有的賦值符(包括復(fù)合賦值)都具有右結(jié)合性,就是在表達(dá)式中最右邊的操作最先執(zhí)行,然后從右到左依次執(zhí)行。這樣,c先賦值給b,然后b在賦值給a,最終a的值是2。類似地,具有左結(jié)合性的操作符(如位操作符“&”和“|”)則是從左至右依次執(zhí)行。結(jié)合性只用于表達(dá)式中出現(xiàn)兩個(gè)以上相同優(yōu)先級(jí)的操作符的情況,用于消除歧義。C語言中具有右結(jié)合性的運(yùn)算符包括所有單目運(yùn)算符以及賦值運(yùn)算符(=)和條件運(yùn)算符。其它都是左結(jié)合性。判斷表達(dá)式計(jì)算順序時(shí),先按優(yōu)先級(jí)高的先計(jì)算,優(yōu)先級(jí)低的后計(jì)算,當(dāng)優(yōu)先級(jí)相同時(shí)再按結(jié)合性,或從左至右順序計(jì)算,或從右至左順序計(jì)算。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天才發(fā)現(xiàn)原來有人把操作符優(yōu)先級(jí)和執(zhí)行順序混在一起了 ——輪子哥??? 舉個(gè)例子來說明操作符優(yōu)先級(jí)和執(zhí)行順序之間的...
    xdqkid閱讀 871評(píng)論 0 0
  • 高級(jí)運(yùn)算符 文檔地址 作為 基本運(yùn)算符 的補(bǔ)充,Swift 提供了幾個(gè)高級(jí)運(yùn)算符執(zhí)行對(duì)數(shù)傳值進(jìn)行更加復(fù)雜的操作。這...
    hrscy閱讀 913評(píng)論 0 2
  • 高級(jí)運(yùn)算符(Advanced Operators) 本文參考自蘋果官方文檔Advanced Operators本頁...
    果啤閱讀 1,706評(píng)論 1 5
  • 這個(gè)時(shí)節(jié)本該是烈日與汗津津的黏稠,卻不想,到了唐山、到了曹妃甸,卻是趕上了一場(chǎng)涼爽。在抵達(dá)多瑪樂園時(shí),一下車便被叮...
    乍暖閱讀 1,347評(píng)論 0 0
  • 本篇文章主要介紹線程池,線程池executors及它們?cè)赼ndroid中的使用。我將使用一些例子代碼來進(jìn)行講解。 ...
    北銘閱讀 1,383評(píng)論 0 12

友情鏈接更多精彩內(nèi)容