1. 程式人生 > >一起來學習如何快速、準確、輕鬆地記住C語言的運算子優先順序順序!!

一起來學習如何快速、準確、輕鬆地記住C語言的運算子優先順序順序!!

本文僅適用於怎麼也記不住運算子優先順序順序的人,已經記住了的就飄過吧 ~~ 估計很多初學 C 語言的人都會碰到這麼一個問題: C 運算子太多太複雜,優先順序順序難記,背了還是忘。那怎麼辦呢? 在實際寫程式的過程中倒還好,實在不知道哪個先哪個後,咱就給它加個括號,而且給程式中新增適當的括號也是非常推薦,值得表揚的,是一個很好的程式設計習慣。 可是問題又來了,考試(比如說期末考試、等級考試。。)的時候出卷老師可不跟你來這套,他就是不用括號,然後就看著你得意地笑:小樣,猜個答案吧 …… 結果往往是以我們的失敗而告終! 像我標題所說的,如何快速、準確、輕鬆地記住

C 語言的運算子優先順序順序呢?(下面的內容都出自《 C Traps and Pitfalls 》,不過我用簡單點的語言給概括一下) 首先來張圖 ,別暈,仔細看看還是層次分明的

咱們就來解釋一下這張圖的內容,下面就單刀直入,不廢話了 這是 C 語言中所有運算子優先順序的表,左邊一個大箭頭一看就知道:從上到下,優先順序依次降低; 然後看整體最粗的藍色線,它將所有的運算子分為六個部分,最上面 4 個優先順序最高,書上說它們其實不算嚴格意義上的運算子,記住就行了,應該沒啥問題;接下來有點多了,不過他們有個通稱就是 單目運算子

;再接下來最多的那個,怎麼記呢? 雙目運算子 ;再接下來這一個你肯定猜到了: 三目運算子 ;緊隨其後的就是賦值運算子了,注意這裡包涵很多種的賦值運算子: = op= ;逗號運算子優先順序最低; 上面的弄懂了的話,對於運算子優先順序的掌握就成功一大半了,其中要注意單目、三目和賦值運算子的結合性是自右向左的 然後就到了中間最大一塊了,如何記住雙目運算子之間的優先順序呢?四個字:數移關邏。數學 > 移位 > 關係 > 邏輯,簡單吧? 數學運算子,小學生都知道,先乘除(這裡加個模)後加減; 移位就沒啥說的了;
關係運算符中,大小判斷優於等於判斷; 邏輯運算子下面又有點小複雜 ,黃色的線將上下一分為二,按位邏輯 > 順序邏輯;同時邏輯與 > 邏輯或;按位異或 ^ 居於與或之間。 所有的 C 語言運算子優先順序和結合性都介紹完了,簡單吧? 如果你以前沒記住又看得比較快,估計到這裡你還是沒記住,沒關係,無窮迴圈,記住了就 break 給個小例子 在使用指標的時候經常碰到諸如 *p++ (*p)++ 這樣的東東,現在是不是一眼就看明白了? * ++ 都是單目運算子,優先順序相同,自右向左 ……