C語言運算符及其優先級彙總表口訣
圓下箭頭一頓號
非凡增減富強針地長
三乘除,四加減,五移位
千萬別把魚忘記,它在盛飯的廚子裏
小燈大燈燈燈不等
爸餵魚,舅疑惑,裸雞也疑惑
十三姨,十四父,十五逗,兜到低
「圓下箭頭一頓號」指的是第15級的運算符。其中圓指的是運算符(),下指的是下標運算符[],箭頭指的是指向結構體成員運算符->,頓號指的是結構體成員運算符、
「非凡增減富強針地長」指的是第14級的運算符。其中非指的是邏輯運算符!,凡指的是按位取反運算符~,增減指的是自增和自減運算符++和--,富指的是 負號運算符-,強指的是類型轉換運算符(類型),針指的是指針運算符*,地指的是地址運算符&,長指的是長度運算符Sizeof
「三乘除,四加減,五移位」 指的是第13級到第11級的運算符。其中三四五並沒有實際意義,只是起區分級別而已。也能夠想象三指的是第13級運算符。乘除指的是乘法運算符*和除法運算 符/,加減指的是加法運算符+和減法運算符-,移位指的是左移運算符<<和右移運算符>>
「千萬別把魚忘記,它在盛飯的廚子裏」指的是求餘運算符%,它位於盛飯的廚子裏,即指和乘法運算符、除法運算符在一塊兒。
「小燈大燈燈燈不等」 指的是第10級到第9級的運算符。其中小燈大燈指的是關係運算符<、<=、>和>=,燈燈指的是等於運算符==,不等指的是不等於運算符!=
「爸餵魚,舅疑惑,裸雞也疑惑」指的是第8級到第4級的運算符。其中,爸餵魚之指的是第8級的按位與運算符&,舅疑惑指的是第7級的按位異或運算 符^和第6級的按位或運算符||,裸雞也疑惑指的是第5級、第4級的邏輯與運算符&&和邏輯或運算符||
「十三姨,十四父,十五逗,兜到低」指的是第3級到第1級的運算符。其中,十三姨指的是條件運算符?: (三有雙重含義,即指?:的優先級別是三,它的運算符類型也是三目,?難道不是姨即疑惑嗎?),十四父的十四沒有實際意義,父指的是賦值運算符=、+=、 -=、*=、/=、%=、>>=、<<=、&=、^=和|= ,十五逗指的是第1級的運算符,兜到低指的是15級運算符以,結束。
附錄:C語言運算符及優先級html
乘除餘三,加減四; //這個"餘"是指取餘運算即%
移位五,關係六; //移位運算符:<< >> ,關係:> < >= <= 等
等於(與)不等排第七; //即== !=
位與異或和位或; //這幾個都是位運算: 位與(&)異或(^)位或(|)
"三分天下"八九十;
邏輯或跟與 //邏輯運算符:|| 和 &&
十二和十一; //注意順序:優先級(||) 底於 優先級(&&)
條件高於賦值, //三目運算符優先級排到 13 位只比賦值運算符和","高//須要注意的是賦值運算符不少!
逗號運算級最低! //逗號運算符優先級最低
因爲C語言的運算符優先級與C++的不徹底同樣(主要是增長了幾個運算符),因此這個口訣不能徹底實用於C++.可是應該可以兼容,你們能夠比較一下他們的區別應該就可以很快掌握C++的優先級的!
((*strDest++=*strSrc++)!='\0'); :
重點:++後增運算符優先級高於*
1.*strDest++至關於 *(strDest++)
2.因爲是後自增,故執行順序爲:
*strDest=*strSrc
strDest++ strsrc++ //該級順序不明
將*strDest與'\0'比較 //即,整個表達式的值爲*strDest與'\0'的比較結果
值得注意的是,對於賦值表達式,表達式自己的值等於左邊子表達式的值。
經過以上深刻的分析,咱們知道這個表達式完成了如下多個功能:
1.對於指針strDest, strSrc,將strSrc所指的內存空間的值賦給由strDest所指的內存空間。
2.判斷賦值後的strDest所指的內存空間的指是否等於0。
3.對於指針strDest,strSrc,他們的值分別加1,即指向下一個元素。
即:該表達式實現瞭如下三個功能:
1.對於指針strDest, strSrc,將strSrc所指的內存空間的值賦給由strDest所指的內存空間。
2.判斷賦值後的strDest所指的內存空間的值是否等於0。
3.對於指針strDest,strSrc,他們的值分別加1,即指向下一個元素。c++
http://c.biancheng.net/cpp/html/1386.html.net