相信最初學C語言的朋友大都背過它的運算符優先級,我當時是背的沒有忘的快;
後來就不太在意了,因為寫代碼時不確定的就通過括號來保證,這也是一些編程規范裡提倡的,
但有時當讀別人代碼時你就又可能存在某些不確定的地方了,直到最近我發現了一個口決,真的很好,
可以很快就把所有優先級順序都輕松記住。
口決如下 :
圓下箭頭一頓號
非凡增減富強星地長(chang)
三乘除、四加減、五移位
千萬別把魚忘記,它在盛飯的廚子裡
小燈大燈燈燈不等
爸喂魚、舅疑惑、裸雞也疑惑
十三姨、十四父、十五逗、兜到底
解析:
“圓下箭頭一頓號”,圓指運算符(),下指下標運算符[],箭頭指的是指向結構體成員運算符->,頓號也是結構體成員運算符.
“非凡增減富強星地長”,非指邏輯運算符!,凡指按位取反運算符~,增減指的是自增自減運算符,++,--,富指的是負號運算符-,
強指的是強制類型轉換運算符(type),星指的是指針運算符*,地指的是地址運算符&,長指的是求長度運算符sizeof
“三乘除、四加減、五移位”,三四五指的是運算符的優先級,並無實際意義,只是區分級別用。乘除、加減、移位分別代表算術運算符*/ + - << >>
“千萬別把魚忘記,它在盛飯的廚子裡”,指求余運算符,它在乘除運算符那一級別
“小燈大燈燈燈不等” 指關系運算符 < <= > >=; == !=
“爸喂魚、舅疑惑、裸雞也疑惑”分別指按位與 &,按位異或 ^,另外還有再低一級的運算符按位或| ,裸雞也疑惑指邏輯運算符 邏輯與 && 邏輯或||
“十三姨、十四父、十五逗、兜到底”,姨指條件運算符 ?: (三有雙重含義,它的優先級是十三,並且它是三目運算符,難道不姨即疑惑嗎),
十四父指的是賦值運算符 = += -= *=/= %= &= ^= |= <<= >>=
十五逗指逗號運算符,兜到底,OK結束。
附運算符表 :
關聯運算符 () []-> .
一元運算符 ! ~ ++ -- + - * & (type) sizeof 自右向左
乘法和除法 * / %
加法和減法 + -
移位運算符 << >>
關系運算符 < <= > >=
“相等”比較 == !=
位運算符 &
位運算符 ^
位運算符 |
邏輯運算符 &&
邏輯運算符 ||
條件運算符 ? :
賦值運算符 = += -= *= /= %= &= ^= |= <<=>>=
逗號運算符 ,